1 / 53

JAVA Applet 小应用程序示例

JAVA Applet 小应用程序示例. 小应用程序的例子。输出“ Hello World !” 。源程序代码如下: // 程序文件名称为 HelloApplet.java import java.awt.Graphics; import java.applet.Applet; public class HelloApplet extends Applet { public void paint (Graphics g ) { g.drawString ("Hello World!",50,25); } }.

Download Presentation

JAVA Applet 小应用程序示例

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. JAVA Applet小应用程序示例

  2. 小应用程序的例子。输出“Hello World!” 。源程序代码如下: • //程序文件名称为HelloApplet.java • import java.awt.Graphics; • import java.applet.Applet; • public class HelloApplet extends Applet • { • public void paint (Graphics g ) • { • g.drawString ("Hello World!",50,25); • } • }

  3. 小应用程序代码书写和编译完成后,无法独立运行,需要一个载体或者容器。下面的HTML网页代码就是小应用程序载入的容器。小应用程序代码书写和编译完成后,无法独立运行,需要一个载体或者容器。下面的HTML网页代码就是小应用程序载入的容器。 <!-- 程序文件名称为HelloApplet.html --> <HTML> <HEAD> <TITLE> HTML Test Page </TITLE> </HEAD>

  4. <BODY> HelloApplet will appear below in a Java enabled browser.<BR> <APPLET CODEBASE = "." CODE = "HelloApplet.class" NAME = "TestApplet" WIDTH = 400 HEIGHT = 300 HSPACE = 0 VSPACE = 0 ALIGN = middle > </APPLET> </BODY> </HTML>

  5. 命令:Appletviewer HelloApplet.html 命令行演示 Eclipse演示

  6. Java程序的构成

  7. Java源程序分为两大部分:程序头包的引用和类的定义。Java源程序分为两大部分:程序头包的引用和类的定义。 1. 程序头包的引用 主要是引用JDK软件包自带的包,也可以是自己定义的类。引用之后程序体中就可以自由应用包中的类的方法和属性。

  8. 2. 类的定义 Java源程序中可以有多个类的定义,但必须有一个主类,这个主类是Java程序运行的入口点 在应用程序中,主类为包含main方法的类 在Java源程序中,主类的名字同文件名一致 类的定义又包括类头声明和类体定义 类体中包括属性声明和方法描述

  9. 属 性 //程序文件名称为WelcomeApplet.java 注释语句 init方法 引入包 public class WelcomeApplet extends Applet implements ActionListener 主类类头 {

  10. actionPerformed 方法 main主方法

  11. 课后试运行该程序!

  12. Java源程序物理上由三部分构成,分别为语句、块和空白。Java源程序物理上由三部分构成,分别为语句、块和空白。 (1) 语句指一行以分号“;”结束的语句 (2) 块指用括号对{}界定的语句序列,块可以嵌套使用。 (3) 空白指语句之间、块内部或者块之间的空白行。 空白不影响Java源程序的编译和运行,适当地运用空白, 可以形成良好的代码风格。

  13. 在前面的例子中 • Label lblName; • TextField txtName; • TextField txtDisp; • 都是语句,而 • { • lblName = new Label("请输入您的名字:"); • txtName = new TextField(8); • txtDisp = new TextField(20); • add(lblName); • add(txtName); • add(txtDisp); • txtName.addActionListener(this); • } • 是块,语句之间、块之间或块内部的空行都为空白。

  14. 第四章 Java面向对象特性 对象与类 对象生命周期 类的创建 重载 子类

  15. 对象的基本概念 面向对象程序语言三个关键特点: 封装 ( Encapsulation ) 继承 ( Inheritance ) 多态 ( Polymorphism )

  16. 类和对象 类是特定类型对象的定义,包括:对象包含的 数据,对象的创建及对象对自身数据操作的方法 类是一个模板 对象是在其类模型基础上构造出的,是具体的 实例

  17. 类和对象举例 类定义: Class EmpInfo{ String name; String designation; String department; void print( ){ System.out.println(name+“is”+ designation+“at”+department);} } 对象的生成与使用: EmpInfo employee = new EmpInfo( ); employee.name = “ Robert Javaman”; employee.designation = “Manager”; employee.department = “Coffee shop”; employee.print( ); ...

  18. 类声明的基本格式: 访问说明符 class类名 extends超类名 implements接口名 其中: (1)访问说明符为public或者缺省 public用来声明该类为公有类,可以被别的对象访问 声明为public的类存储的文件名为类名 如果类声明中没有public,只有与该类定义在同一包中的 类才可以访问该类

  19. 类声明的基本格式: 访问说明符 class类名 extends超类名 implements接口名 其中: (1) 访问说明符 … (2) 类名:用户自定义的标识符,用来标志这个类的引用 (3) 超类名:是指已经存在的类,可以是用户已经定义的,也可以是系统类 (4) 接口名:后面会讲到

  20. 例如:public class HelloApplet extends Applet{ … … } 访问说明符为public,类名HelloApplet,扩展类为JDK包自带的java.applet.Applet类。由于public的存在,所以文件名必须存为HelloApplet.java,同类名保持一致。

  21. 类体:(包括成员变量和方法) (1) 成员变量:指类的一些属性定义,标志类的静态特征, 格式如下: 访问说明符 数据类型变量名 其中: ●访问说明符有public、private和protected三种: public(省略时默认为public):可以由外部对象进行访问 private:私有类型,只允许在同一类的成员方法中使用,其他类的方法禁止访问,从而实现了类的数据隐藏。 Protected:受保护类型,自身、子类及同一个包中类可以访问 ● 数据类型包括基本类型以及用户自定义的扩展类型。

  22. (2) 方法:是类的操作定义,标志类的动态特征,它的基本格式如下: 访问说明符 数据类型 方法名(数据类型1 变量名1, 数据类型2 变量名2) 其中: ●访问说明符为public、private和protected,其使用方法与成员变量访问说明符的使用方法一致。 ●数据类型:包括基本数据类型和用户自定义的扩展类型。 ●数据类型为参数。

  23. 类的构造方法(构造函数) • 构造方法定义: • public 类名(参数){ … } • 注意: • 方法名必须与类名相同 • 不能带返回类型

  24. 缺省构造函数 如果在类定义中无构造函数,Java在编译时 可缺省加入构造方法。如 public Employee( ){ }; 一旦在类中有一个自己声明的构造函数,则缺省 的构造函数将不被加到源程序中。 Employee示例

  25. 对象生命周期  创建对象  使用对象  清除不用的对象

  26. 创建对象 创建对象的三个步骤:  声明 (Declaration ) 实例化(Instantiation) 初始化(Initialization) Class EmpInfo{ String name; String designation; String department; void print( ){ System.out.println(name+“is”+ designation+“at”+department);} } 例: EmpInfo Employee_one; Employee_one = new EmpInfo( ); EmpInfo Employee_one.name =“Bob”; EmpInfo Employee_one.designation=“Manager”; EmpInfo Employee_one.department =“CoffeShop”; Employee示例

  27. 对象的回收 垃圾收集机制(garbage collection):Java运行环境当确定 某个对象不再被使用时,将其删除 一个对象在没有引用指向它时,可作为垃圾收集 垃圾搜集器:Java运行环境中的垃圾搜集器周期性地释放 不用对象占用的空间。

  28. a b c b c (指针悬空) a b c b c 垃圾收集机制 C++:A *a=new A( ); A *b=a; A *c=a; //a 使用完,将其删除 delete a; Java :A a=new A( ); A b=a; A c=a; //a 使用完,将其删除 a= null ;

  29. 数据封装与隐藏 • 封装:将基本数据和对数据进行的操作方法相结合 • 优点: • 隐藏类中具体实现的细节 • 强迫程序员使用统一的接口访问数据 • 提高了代码可维护性 • 数据隐藏:使用private定义的成员变量,只能 • 在成员方法中使用,其它方法中禁止使用 • 优点: 保证对象中数据的一致性

  30. 数据隐藏与封装举例 Class Date{ private int day, month, year; void setDate( int a, int b, int c){ day = a; month = b; year = c ; } } … Date d1; d1.new Date( ); d1.setDate(30,9,2001); ... Date程序示例 d1.day = 30;(错误!)

  31. “this “引用 关键字this 用来指向当前对象本身。 例:class Date { private int day, month,year; public Date getTommorrow( ){ this.day++; … } 请课后自己运行理解

  32. 重载(Overloading) • 含义:在同一个类中一个方法名被用来定义多个 • 方法。 • classScreen { • public void print( int i){ … } • public void print( float i){ … } • public void print( String str ){ … } • } • 重载必须遵守原则: • 参数表必须不同,以此区分不同方法体。 • 返回类型、修饰符可相同或不相同。

  33. 激活重载的构造方法 在一个构造方法中可以利用另一个构造方法。 class Employee{ private String name; private int salary; public Employee(String n, int s){ name = n ; salary = s; } public Employee( String n){ this(n,0); } public Employee( ){ this(“Unknown”); } }

  34. 子类 子类表示类之间一种“属于”( is a )关系。 例:public class Employee { String name ; Date hireDate ; Date dateofBirth ; String jobTitle ; int grade ; … } public class Manager { String name ; Date hireDate ; Date dateofBirth ; String jobTitle ; int grade ; String department ; Employee [ ] subordinates; … }

  35. Extends 关键字  Java中用 extends 关键字定义子类。 public class Employee { String name ; Date hireDate ; Date dateofBirth ; String jobTitle ; int grade ; … } public class Manager extends Employee{ String department ; Employee [ ] subordinates; } 子类是从已有的类创建新类的一种方法。

  36. 子类 子类继承父类的属性、功能(方法),子类中只 需声明特有的东西(父类中所没有的)。 带private 修饰符的属性、方法是不能被继承的。 构造函数不能被继承。 在方法中调用构造方法用this()。 调用父类的构造方法用super()。 -- super 指向该关键字所在类的父类。

  37. 构造不同类型数据的集合 Java中允许构造如下类型的数组: Employee [ ] staff = new Employee[1024]; staff[0] = new Manager( ); staff[1] = new Worker(); staff[2] = new Employee(); … ---- staff 是由多种类型的对象组成的。 Java中任何一个子类的实例都可作为父类的实例 使用,可以调用父类具有的方法。

  38. 单继承 • Java是单继承的,即只能从一个类继承, • extends后类名只能有一个。 • 单继承的优点: • 代码更可靠 • 可以用接口弥补 • 用一个类实现多个接口,达到多继承效果。 • (在介绍接口的时候讲)

  39. 重写(Overriding methods) 子类可以改变从父类继承的行为。 被重写方法的返回值、方法名、参数列表要 与父类中的方法完全一样。

  40. 方法重写的规则 必须返回与原来方法完全相同的返回值。 方法的访问权限不能缩小。 不能抛出新的例外。

  41. 多 态 •  Java允许父类对象的变量作为子类对象的变量 使用。 • 如:Employee e = new Manager( ); • 但通过该变量(如e)只能访问父类的方法,子类特有的部分被隐藏。 • 运行时确定使用父类还是子类的方法。

  42. Super关键字 Super指向该关键字所在类的父类。 Public class Empolyee { private String name ; private int salary; public String getDetails( ){ return “Name: ”+name+“\nSalary:”+salary; } } public class Manager extends Empolyee { private String department ; public String getDetails( ){ return super.getDetailes( )+‘\nDepartment: “+ department; } } 课后运行例子

  43. “instanceof”及类型强制转换 Instanceof 测试对象类型 Empolyee a = new Manager(); 则a instanceof Manager 为true; 类型转换 父类弱、子类强,指向父类的引用不能直接按子类引用, 必须要强制类型转换后才能作为子类的引用使用。 例:public void method( Employee e){ if (e instanceof Manager){ Manager m = (Manager) e ; m.department = “…”; … } }

  44. 子类对象的初始化 • 初始化对象是很结构化的。 • 在对对象初始化时,分三步: • 分配空间,并初始化为“0”值。 • 按继承关系从顶向下显式初始化。 • 按继承关系从顶向下调用构造函数。

  45. 调用父类构造方法 缺省是不带参数的构造方法。 如果需要调用特殊的父类构造方法,则需在 子类构造方法中第一行通过super( … )调用。 class Employee{ ... public Employee( String n){ name=n; } } class Manager entends Emplyee{ public Manager( String s,String d){ super(s); ... } }

  46. 作 业 (1)

  47. Object 及其子类 Object定义了所有对象都需要的状态和行为。如对象之间的比较、将对象转换为字符串、等待某个条件变量、当某条件变量改变时通知相关对象以及返回对象的类。

  48. Object 及其子类 在Object子类中可以重写的方法: • clone • equals • finalize • toString:返回对象的字符串表示,表达的内容因具体的对象而异 在Object子类中不能重写的方法: • getClass • notify • notifyAll • wait

  49. Object的clone方法  aCloneableObject.clone(); //从已有的对象创建新的对象 注意: • aCloneableObject必须实现了Cloneable接口 • Object.clone()是shallow copy 而不是 deep copy

  50. Object的clone方法 public class Stack implements Cloneable { private Vector items; // code for Stack's methods and constructor not shown protected Object clone() { try { Stack s = (Stack)super.clone(); // clone the stack s.items = (Vector)items.clone(); // clone the vector return s; // return the clone } catch (CloneNotSupportedException e) { } } }

More Related