java中的对象、类、包和接口.ppt

上传人:牧羊曲112 文档编号:6509633 上传时间:2023-11-07 格式:PPT 页数:133 大小:492.50KB
返回 下载 相关 举报
java中的对象、类、包和接口.ppt_第1页
第1页 / 共133页
java中的对象、类、包和接口.ppt_第2页
第2页 / 共133页
java中的对象、类、包和接口.ppt_第3页
第3页 / 共133页
java中的对象、类、包和接口.ppt_第4页
第4页 / 共133页
java中的对象、类、包和接口.ppt_第5页
第5页 / 共133页
点击查看更多>>
资源描述

《java中的对象、类、包和接口.ppt》由会员分享,可在线阅读,更多相关《java中的对象、类、包和接口.ppt(133页珍藏版)》请在三一办公上搜索。

1、1,第四章 java 中的对象、类、包和接口,4.1 初识对象和类4.2 对象的生命周期4.3 创建类4.4 包的创建和使用4.5 类成员的访问控制 4.6 类成员与实例成员 4.7 继承4.8 嵌入类 Inner Classes4.9 接口,2,4.1 初识对象和类,例1.定义了一个名为SimplePoint 的类public class SimplePoint public int x=0;/x为成员变量 public int y=0;/y为成员变量,第四章 java 中的对象、类、包和接口,3,4.1 初识对象和类,当创建一个新的对象时(对该类实例化),就会为该对象及其成员分配空间,同时

2、对成员变量进行初始化。,第四章 java 中的对象、类、包和接口,4,4.1 初识对象和类,例2 定义一个名为SimpleRectangle类public class SimpleRectangle public int width=0;public int height=0;public SimplePoint origin=new SimplePoint();,第四章 java 中的对象、类、包和接口,5,4.1 初识对象和类,当初始化origin成员时将调用代码new SimplePoint()创建一个SimplePoint对象。,第四章 java 中的对象、类、包和接口,6,4.1 初

3、识对象和类,例3 public class Point public int x=0;public int y=0;/a constructor!public Point(int x,int y)this.x=x;this.y=y;见例题:Rectangle.java,new Point(44,78),第四章 java 中的对象、类、包和接口,7,4.2 对象的生命周期,创建对象 对象的使用 清除对象,第四章 java 中的对象、类、包和接口,8,4.2 对象的生命周期,创建对象 通过创建一个对象可创建类的一个实例,也称实例化此类。例Rectangle rect=new Rectangle()

4、;创建一个对象包括三部分:声名部分 实例化部分 初始化部分,第四章 java 中的对象、类、包和接口,9,4.2 对象的生命周期1.创建对象,声名对象 声明对象的名字和类型,用类名来说明对象的类型。格式:type name说明:声明对象的规则与变量声明规则相同,但对象变量是引用类型;在java里类和接口都可以作为数据类型来使用;对象声明通知编译器name将用来引用type类型的变量 对象声明并不创建新的对象。例:Rectangle rect;,第四章 java 中的对象、类、包和接口,10,4.2 对象的生命周期1.创建对象,实例化对象 操作符new通过为新对象分配存储空间来实例化类格式:ne

5、w 类的构造方法例new Rectangle(100,200);Rectangle rect=new Rectangle(100,200);,第四章 java 中的对象、类、包和接口,11,4.2 对象的生命周期1.创建对象,初始化对象每个类都至少有一个构造函数,当创建对象时调用指定的构造函数来初始化对象例Rectangle rect=new Rectangle();Rectangle rect=new Rectangle(100,200);Rectangle rect=new Rectangle(new Point(44,78);注:在定义类时如未定义构造函数系统,java会自动构造一个没有

6、参数的构造函数。,第四章 java 中的对象、类、包和接口,12,4.2 对象的生命周期2.对象的使用,使用对象包括:从对象中获得信息 改变对象的状态 使对象执行某些操作 实现途径:引用对象的变量 调用对象的方法,第四章 java 中的对象、类、包和接口,13,4.2 对象的生命周期 2.对象的使用,引用对象的变量 引用对象变量的格式:对象引用.对象的变量例:rect.origin=new Point(15,37);area=rect.height*rect.width;height=new Rectangle().height;说明:可以像使用其它变量一样来使用对象的变量。例如:area=r

7、ect1.height*rect1.width,第四章 java 中的对象、类、包和接口,14,4.2 对象的生命周期 2.对象的使用,调用对象的方法 格式:对象引用.对象方法名();或 对象引用.对象方法名(参数表);例rect.move(15,37);new Rectangle(100,50).area()说明:对于返回值的方法,方法调用可以用于表达式中 调用一个对象的方法即是向该对象发送一个消息.,第四章 java 中的对象、类、包和接口,15,4.2 对象的生命周期3.清除对象,java运行使系统有一个垃圾回收进程负责清除不再使用的对象。垃圾回收器垃圾回收器定期扫描内存,对于被应用的对

8、象加上标记,按可能的路径扫描结束后清除未加标记的对象。被回收的对象是:不再被任何引用变量引用的对象引用变量自动放弃人为地将引用变量置为null,第四章 java 中的对象、类、包和接口,16,4.2 对象的生命周期3.清除对象,垃圾回收器当系统的内存用尽或程序中调用System.gc()要求进行垃圾收集时,垃圾收集线程与系统同步运行。否则垃圾收集器在系统空闲时异步地执行。,第四章 java 中的对象、类、包和接口,17,4.2 对象的生命周期3.清除对象,finialize()方法在一个对象被垃圾回收器回收之前,java解释器会自动调用对象的finalize()方法。通常在该方法内包括了释放系

9、统资源的代码段。finalize()方法在类java.lang.Object中实现如:protected void finalize()throws throwable/clean up code for this classsuper.finalize();/清除对象使用的所有资源,包括由于继/承关系而获得的资源,第四章 java 中的对象、类、包和接口,18,4.3 创建类,4.3.1 类声明 4.3.2 类体(Class Body),第四章 java 中的对象、类、包和接口,19,4.3 创建类,一个类包括两部分:类声明类体见右图:,第四章 java 中的对象、类、包和接口,20,4.3

10、 创建类 4.3.1 类声明,在类的声明里,说明了类的名字及其它属性。下图说明了类声明中包含的各部分:,第四章 java 中的对象、类、包和接口,21,4.3 创建类 4.3.1 类声明,说明:在类声明中,public、abstract、final为类的修饰符,是可选的,缺省时说明所定义的类是非public、非abstract、非final的类。,第四章 java 中的对象、类、包和接口,22,4.3 创建类 4.3.2 类体,类体为该类的对象提供了在生存期内需要的所有代码。包括以下几部分:构造方法(constructor)成员变量(member variable)的声明方法(Method)的

11、实现,第四章 java 中的对象、类、包和接口,23,4.3 创建类 4.3.2 类体,1.构造方法定义:类中用来初始化新建的对象的方法称构造方法。特点:无返回类型,方法名与类名相同,第四章 java 中的对象、类、包和接口,24,4.3 创建类 4.3.2 类体,1.构造方法说明:构造方法可被重载。例如:public class Thing private int x;public Thing()x=47;public Thing(int new_ x)x=new_ x;,第四章 java 中的对象、类、包和接口,25,4.3 创建类 4.3.2 类体,1.构造方法说明:其中变量和方法称为类

12、的成员(成员变量和成员方法),而构造方法不是类的成员。每个类中至少有一个构造方法。定义类时如未定义构造方法,运行时系统会为该类自动定义缺省的构造方法。没有任何参数 没有body不做任何事情,第四章 java 中的对象、类、包和接口,26,4.3 创建类 4.3.2 类体,1.构造方法说明:构造方法只能由new运算符调用构造方法同样也有访问权限的限制 publicprotectedprivatepackage,第四章 java 中的对象、类、包和接口,27,4.3 创建类 4.3.2 类体,2.成员变量的声明 成员变量在类体中声明,但在构造方法和方法之外。classDeclaration mem

13、ber variable declarationsconstructor declarationsmethod declarations,第四章 java 中的对象、类、包和接口,28,4.3 创建类 4.3.2 类体,2.成员变量的声明 声明格式:,第四章 java 中的对象、类、包和接口,29,4.3 创建类 4.3.2 类体,2.成员变量的声明 说明:accessLevel:对成员变量的访问控制,有四级访问控制:public,protected,package,private。缺省时为package。static:说明该变量为类变量,缺省时为实例变量。final:指明该变量的值不能被改变

14、,既该变量为常量。例 final double AVOGADRO=6.023e23;,第四章 java 中的对象、类、包和接口,30,4.3 创建类 4.3.2 类体,2.成员变量的声明 说明:type:用于说明成员变量的类型。可以是基本数据类型,如int,float,boolean 等,也可以是引用类型,如数组名,类或接口名。在同一个类中不允许有同名的成员变量,但允许成员变量名和方法名相同。,第四章 java 中的对象、类、包和接口,31,4.3 创建类 4.3.2 类体,2.成员变量的声明 例子:public class SliderDemo public static final int

15、 FPS_INIT=15;private int frameNumber=0;protected int delay;boolean frozen=false Timer timer;private String name=Fred Flintstone;,第四章 java 中的对象、类、包和接口,32,4.3 创建类 4.3.2 类体,3.方法的实现 与类相似,方法的声明也包括两部分:方法声明和方法体:如下图所示:,第四章 java 中的对象、类、包和接口,33,4.3 创建类 4.3.2 类体,3.方法的实现 方法声明:定义方法的属性,如访问控制级,返回值的类型,方法名字,参数等,第四章

16、java 中的对象、类、包和接口,34,4.3 创建类 4.3.2 类体,3.方法的实现 返回值:返回值的数据类型必须和声明中的返回类型一致,或者完全相同,或者是它的一个子类。当一个方法不需要返回值时,返回类型为void。,第四章 java 中的对象、类、包和接口,public Number returnANumber().,35,4.3 创建类 4.3.2 类体,3.方法的实现 参数传递:1)参数的类型可以是:简单数据类型:值传送。方法接收参数的值,但并不能改变这些参数的值 引用数据类型(数组类型、类或接口):地址传递。传递给方法的是数据在内存中的地址,见例题:ArgumentTest.ja

17、va,第四章 java 中的对象、类、包和接口,36,4.3 创建类 4.3.2 类体,3.方法的实现 参数传递:2)参数的命名:参数名字可以与类的成员变量 相同,但参数名会隐藏成员。变量为了区别参数与类的成员变量,我们必须使用thisclass Circle int x,y,radius;public Circle(int x,int y,int radius)this.x=x;this.y=y;this.radius=radius;,第四章 java 中的对象、类、包和接口,37,4.3 创建类 4.3.2 类体,3.方法的实现 方法体:定义:方法的实现部分,包括局部变量的声明和所有合法的

18、java语句。局部变量:在方法体内定义的变量称局部变量,局部变量的作用域限于方法内。如果局部变量的名字和类的成员变量的名字相同,则类的成员变量被隐藏可以使用this 调用当前类的成员变量。,第四章 java 中的对象、类、包和接口,38,4.3 创建类 4.3.2 类体,3.方法的实现 例题:class Variable int x=0,y=0,z=0;/class member variables void init(int x,int y)this.x=x;this.y=y;int z=5;/local variable System.out.println(*in init*);Syst

19、em.out.println(x=+x+y=+y+z=+z);,第四章 java 中的对象、类、包和接口,39,4.4 包的创建和使用,第四章 java 中的对象、类、包和接口,定义:包是一组相关的类或接口的集合,它提供了访问保护和名字空间管理。Java编译器使用文件系统目录来保存包。,40,4.4 包的创建和使用,第四章 java 中的对象、类、包和接口,使用包的好处:程序员能很容易确定同一包中的类是相互关联的。程序员能很方便地了解到在哪里可以找到能完成特定功能的类 由于每个包都创建了一个名字空间,个人创建的类名不会和其它包中的类名名发生冲突 可以使同一包中的类彼此不加限制地访问,而同时对其

20、它包中的类提供访问控制。,41,4.4 包的创建和使用,第四章 java 中的对象、类、包和接口,1.创建包格式:package pkg1.pkg2.pkg3;package语句必须放在原文件的开始处。例如:java.io java.util java.lang java.applet javax.swingpackage graphics;public class Circle.,42,4.4 包的创建和使用,第四章 java 中的对象、类、包和接口,1.创建包说明:package的作用域是整个源文件 如果在同一个源文件中定义了多个类,最多仅可以有一个类用public修饰,且源文件名必须与该

21、类名相同 当未使用package语句时,类和接口放在无名缺省包里 包的命名习惯:将Internet域名作为包名 例如:.,43,4.4 包的创建和使用,第四章 java 中的对象、类、包和接口,2.包的使用 包中的所有类中只有public类能被包外部的类访问。有三种方法访问包中的类:1)使用长名字引用包中的公共成员 即在类名前注明包名例graphics.Rectanglegraphics.Rectangle myRect=new graphics.Rectangle();,44,4.4 包的创建和使用,第四章 java 中的对象、类、包和接口,2.包的使用引进包的公共成员 在文件的开始处使用i

22、mport语句将指定的成员引进到当前文件中.格式:import pkg1.pkg2.类名例import graphics.Circle;Circle myCircle=new Circle();,45,4.4 包的创建和使用,第四章 java 中的对象、类、包和接口,2.包的使用3)引进整个包 使用import语句引进包中的所有类和接口格式:import pkg1.pkg2.*例import graphics.*;现在可以使用短名字来引用类graphics包中的所有类.Circle myCircle=new Circle();Rectangle myRectangle=new Rectangl

23、e();,46,4.4 包的创建和使用,第四章 java 中的对象、类、包和接口,3.源文件和类文件的管理 JDK利用文件系统的层次结构来管理源文件和类文件。源文件和类文件所在的目录名应与其中的类所在的包名对应,编译器和解释器按此机制来查找类。如:,47,4.4 包的创建和使用,第四章 java 中的对象、类、包和接口,3.源文件和类文件的管理,48,4.4 包的创建和使用,第四章 java 中的对象、类、包和接口,3.源文件和类文件的管理 当源文件中有多个类定义时,编译后将产生多个类文件。,49,4.4 包的创建和使用,第四章 java 中的对象、类、包和接口,3.源文件和类文件的管理 虽然

24、类文件所在的目录序列必须与包名对应,但不一定与源文件在相同的目录中。,javac d d:classes Rectangle.java,50,4.4 包的创建和使用,第四章 java 中的对象、类、包和接口,3.源文件和类文件的管理 说明:包对应于文件系统的目录管理方式可以帮助编译器和解释器找到程序中的类和接口存放的地方。CLASSPATH指出用户的类库所在目录,在类路径(CLASSPATH)中只需指出包路径之上的顶层路径CLASSPATH=.;d:classes,51,4.4 包的创建和使用,第四章 java 中的对象、类、包和接口,3.源文件和类文件的管理 设置类路径的方法设置环境变量CL

25、ASSPATH(不推荐)set classpath=.;d:classes在调用编译器或解释器时使用-classpath选项 例 java-classpath d:classes com.taranis.grathpics.Test 见例子:包的使用.txt,52,4.5 类成员的访问控制,在java语言中对类的成员有四种级别的访问控制:private,protected,public,package.如定义类时未指定访问控制说明符,则其访问控制级别为package。,第四章 java 中的对象、类、包和接口,53,4.5 类成员的访问控制,第四章 java 中的对象、类、包和接口,例题见:访

26、问权限.txt,54,4.6 类成员与实例成员,第四章 java 中的对象、类、包和接口,在类中声明一个变量或方法时,还可以指定它为实例成员或类成员。如下的格式:static type classVar;static returnType classMethod(paramlist),55,4.6 类成员与实例成员,第四章 java 中的对象、类、包和接口,类变量与实例变量 二者区别:运行时系统在首次遇到类变量时就为类变量存储空间;而当创建类的实例对象时才为实例变量分配存储空间。不管有多少类的实例,类变量只有一份拷贝,即所有实例共享相同的类变量;而每个实例对象都有自己的实例变量。实例变量只能通

27、过对象来访,而类变量既可以通过类名来访问,也可以通过实例对象来访问。,56,4.6 类成员与实例成员,第四章 java 中的对象、类、包和接口,类方法与实例方法 二者区别:实例方法即能访问当前对象的实例变量也能访问类变量;类方法只能访问类变量而不能访问实例变量。实例方法只能由实例对象来调用而类方法即可以由实例对象调用也可以由类名直接调用。见例题:MemberTest.java,57,4.6 类成员与实例成员,第四章 java 中的对象、类、包和接口,说明:可用static来定义全局变量和全局方法,这时由于类成员仍然封装在类中,与C、C+相比,可以限制全局变量和全局方法的使用范围而防止冲突。一个

28、类的main()方法必须要用static来修饰,也是因为Java运行时系统在开始执行一个程序前,并没有生成类的一个实例,它只能通过类名来调用main()方法作为程序的入口。通常,static与final一起使用来指定一个常量 如:protected static final String DISABLE=disable;,58,4.6 类成员与实例成员,第四章 java 中的对象、类、包和接口,初始化类变量和实例变量(Instance and Class Members)可以在类中声明的时候初始化class BedAndBreakfast static final int MAX_CAPACI

29、TY=10;/类变量 boolean full=false;float f=3.14f;Depth o=new Depth();/引用类型 int i=f();/通过调用一个方法来提供初始值,59,4.6 类成员与实例成员,第四章 java 中的对象、类、包和接口,初始化类变量和实例变量 实例变量:在构造方法中进行初始化。class Counter int i;Counter(j)i=j;/.,60,4.6 类成员与实例成员,第四章 java 中的对象、类、包和接口,初始化类变量和实例变量 类变量:类初始块中进行初始化。class Spoon static int i;static i=47;

30、/.这段代码仅执行一次首次生成那个类的一个对象时,或者首次访问属于那个类的一个static成员时(即便从未生成过那个类的对象)。见例题:ExplicitStatic.java,61,4.6 类成员与实例成员,第四章 java 中的对象、类、包和接口,初始化类变量和实例变量 说明:类初始块不能在任何方法内。类初始块只执行一次,62,4.7 继 承,第四章 java 中的对象、类、包和接口,4.7.1 理解继承4.7.2 类 4.7.3 final类和方法4.7.4 abstract类和方法,63,4.7 继 承4.7.1 理解继承,父类、子类和继承成员变量的隐藏和方法的重写super关键字方法的

31、重载运行时多态instanceof 操作符,第四章 java 中的对象、类、包和接口,64,4.7 继 承4.7.1 理解继承,第四章 java 中的对象、类、包和接口,父类、子类和继承 例子:,65,4.7 继 承4.7.1 理解继承,第四章 java 中的对象、类、包和接口,父类、子类和继承 定义:子类:继承而得到的类为子类。子类继承父类的状态和行为,同时也可以修改父类的状态或重写父类的行为,并添加新的状态和行为 父类:被继承的类为父类,父类包括所有直接或间接被继承的类,66,4.7 继 承4.7.1 理解继承,父类、子类和继承 Java语言是单继承机制,不支持多重继承单继承是代码更加可靠

32、。接口可以提供多继承功能。,第四章 java 中的对象、类、包和接口,67,4.7 继 承4.7.1 理解继承,第四章 java 中的对象、类、包和接口,交通工具,汽车,卡车,旅行车,小汽车,轿车,跑车,面包车,父类、子类和继承,68,4.7 继 承4.7.1 理解继承,父类、子类和继承 Java中,所有的类都是通过直接或间接地继承得到的,第四章 java 中的对象、类、包和接口,69,4.7 继 承4.7.1 理解继承,父类、子类和继承创建子类通过在类的声明中加入extends子句来创建一个类的子类,其格式如下:class SubClass extends SuperClass 说明:如果缺

33、省extends子句,则该类为的子类,第四章 java 中的对象、类、包和接口,70,4.7 继 承4.7.1 理解继承,父类、子类和继承 子类能够继承什么?子类能够继承父类中public和protected的成员。子类能够继承父类中没有访问控制的成员,只要子类和父类在同一个包内。子类不能继承父类隐藏的成员变量和重写的父类方法子类不能继承父类中private成员。子类不能继承父类中构造方法。因为构造方法不是类的成员,第四章 java 中的对象、类、包和接口,71,4.7 继 承4.7.1 理解继承,第四章 java 中的对象、类、包和接口,成员变量的隐藏和方法的重写 变量的隐藏:子类中声明了和

34、父类同名的变量,父类的成员变量被隐藏。方法的重写:子类中定义了与父类相同的方法,则父类的方法被重写。,72,4.7 继 承4.7.1 理解继承,第四章 java 中的对象、类、包和接口,成员变量的隐藏和方法的重写例题:class SuperClass int x;void setX()x=0;,class SubClass extends SuperClass int x;/hide x in SuperClass void setX()/overload x=5;,73,4.7 继 承4.7.1 理解继承,第四章 java 中的对象、类、包和接口,成员变量的隐藏和方法的重写说明:重写的方法和

35、父类中被重写的方法要具有相同的名字,相同的参数表和相同的返回类型子类通过成员变量的隐藏和方法的重写可以把父类的状态和行为改变为自身的状态和行为,74,4.7 继 承4.7.1 理解继承,例题:方法的重写,第四章 java 中的对象、类、包和接口,75,4.7 继 承4.7.1 理解继承,第四章 java 中的对象、类、包和接口,成员变量的隐藏和方法的重写说明:子类中不能重写父类中的final method子类中必须重写父类中的abstract method,否则子类也为抽象类。,76,4.7 继 承4.7.1 理解继承,3.super 关键字 super用来引用当前对象的父类,super来实现

36、对父类成员的访问。应用:子类在隐藏了父类的成员变量或重写了父类的方法后,常常还要用到父类的成员在重写的方法中使用父类中被重写的方法以简化代码的编写,第四章 java 中的对象、类、包和接口,77,4.7 继 承4.7.1 理解继承,3.super 关键字 super的使用有三种情况:用来访问父类被隐藏的成员变量,如:super.variable 用来调用父类中被重写的方法,如:super.Method(paramlist);用来调用父类的构造函数,如 super(paramlist);例题:inheritance.java,Manager.java,第四章 java 中的对象、类、包和接口,7

37、8,4.7 继 承4.7.1 理解继承,3.super 关键字说明:用来调用父类的构造函数super(paramlist)必须放在子类构造方法的句首。如果子类没有明确的调用父类的构造函数,编译器会自动的调用super()语句,它调用父类的默认构造函数。如果父类没有默认构造函数则编译出错。例题:Manager1.java,第四章 java 中的对象、类、包和接口,79,4.7 继 承4.7.1 理解继承,4.方法的重载(overloading)在同一个类中名字相同但参数个数或类型不同的方法。返回值可以不同。例如:public void println(int i)public void prin

38、tln(float f)public void println(String s)见例题 MethodOverloadingTest.java,第四章 java 中的对象、类、包和接口,80,4.7 继 承4.7.1 理解继承,4.方法的重载(overloading)构造方法也可以重载。可以在构造方法的第一条语句使用this来调用其他的构造方法。见例题 Employee.java,第四章 java 中的对象、类、包和接口,81,4.7 继 承4.7.1 理解继承,5.运行时多态对于重写或继承的方法,Java运行时系统根据调用该方法的实例的类型来决定选择哪个方法调用。,第四章 java 中的对象

39、、类、包和接口,82,4.7 继 承4.7.1 理解继承,说明:对子类的一个实例,如果子类重写了父类的方法,则运行时系统调用子类的方法,如果子类继承了父类的方法(未重写),则运行时系统调用父类的方法。,第四章 java 中的对象、类、包和接口,83,4.7 继 承4.7.1 理解继承,5.运行时多态class Avoid callme()System.out.println(Inside As callme()method);class B extends Avoid callme()System.out.println(Inside Bs callme()method);public cla

40、ss Dispatchpublic static void main(String args)A a=new B();a.callme();,第四章 java 中的对象、类、包和接口,运行结果为:C:java DispatchInside Bs callme()method,例题:,84,4.7 继 承4.7.1 理解继承,5.运行时多态,第四章 java 中的对象、类、包和接口,例题:,class Student public:/float calcTuition()/;class GraduateStudent extends Student public:/float calcTuiti

41、on()/;,void fn(Student x)x.calcTuition();void main()Student s;GraduateStudent gs;fn(s);fn(gs);,85,4.7 继 承4.7.1 理解继承,例题:Shapes.java为什么要上溯到父类呢?我们可以从以下例题中找到答案:例题:music.java例题:music1.java,第四章 java 中的对象、类、包和接口,86,4.7 继 承4.7.1 理解继承,6.instanceof 操作符用来判断对象属于哪个类,第四章 java 中的对象、类、包和接口,public class Employee ext

42、ends Objectpublic class Manager extends Employeepublic class Engineer extends Employee-public void doSomething(Employee e)if(e instanceof Manager)/Process a Manager else if(e instanceof Engineer)/Process an Engineer else/Process any other type of Employee,例如:,87,4.7 继 承4.7.2 类 jave.lang.Object,第四章 j

43、ava 中的对象、类、包和接口,类处于Java开发环境的类层次树的根部,其他所有的类都直接或间接地为它的子类一个类如果没有声明继承某个类,则默认继承Object类。public class Employee.等价于:public class Employee extends Object.,88,4.7 继 承4.7.2 类 jave.lang.Object,第四章 java 中的对象、类、包和接口,该类定义了一些所有对象最基本的状态和行为常用的有:equals()getClasstoStringfinalize notify notifyAll wait,89,4.7 继 承4.7.2 类

44、jave.lang.Object,第四章 java 中的对象、类、包和接口,equals()一般情况下需要覆盖Object中的equals()方法例如:Integer one=new Integer(1),anotherOne=new Integer(1);if(one.equals(anotherOne)(“objects are equal”);if(one=anotherOne)(“objects are equal”);else(“objects are equal”);,90,4.7 继 承4.7.2 类 jave.lang.Object,第四章 java 中的对象、类、包和接口,2

45、.getClass()getClass()方法是final方法,它不能被重写。它返回一个对象在运行时所对应的类的表示例如下面的方法得到并显示对象的类名:void PrintClassName(Object obj)System.out.println(“The objects class is“+obj.getClass().getName();,91,4.7 继 承4.7.2 类 jave.lang.Object,第四章 java 中的对象、类、包和接口,2.getClass()可以用getClass创建一个类的实例,而不必在编译时即知道到底是哪个类。下例创建了一个与对象obj具有相同类型的

46、一个实例,所创建的对象可以是任何类。Object creatNewInstanceOf(object obj)return obj.getClass().newInstance();,92,4.7 继 承4.7.2 类 jave.lang.Object,第四章 java 中的对象、类、包和接口,3.toString()toString()方法用来返回对象的字符串表示.不同的对象显示的形式也不一样。例如:System.out.println(Thread.currentThread().toString();显示结果为:Threadmain,5,main int pInt=500;Integer

47、 wInt=new Integer(pInt);System.out.println(wInt.toString();显示结果为:500,93,4.7 继 承4.7.3 final数据、方法和类,第四章 java 中的对象、类、包和接口,1.final数据它可以是编译时的常量它可以是运行时才初始化的常量见例题:FinalData.java,94,4.7 继 承4.7.3 final数据、方法和类,第四章 java 中的对象、类、包和接口,2.final方法有些方法不能被重写,这时把它限定为final方法,其格式为:final returnType finalMethod(paramlist),

48、95,4.7 继 承4.7.3 final数据、方法和类,第四章 java 中的对象、类、包和接口,3.final类final类不能被继承。出于以下原因由于,有时候希望一些类不能被继承安全性的原因:如Java中的String类。面向对象的设计上的考虑:如果你认为一个类的定义已经很完美,不需要再生成它的子类,这时也应把它修饰为final类,96,4.7 继 承4.7.3 final数据、方法和类,第四章 java 中的对象、类、包和接口,3.final类定义一个final类的格式如下:final class finalClassName,97,4.7 继 承4.7.3 final数据、方法和类,

49、第四章 java 中的对象、类、包和接口,3.final类final class Da int i=7;int j=1;void f()class Further extends Da/error,98,4.7 继 承4.7.3 abstract类和方法,第四章 java 中的对象、类、包和接口,abstract类:表示抽象的概念,不能够被实例化为一个对象。例如Java中的Number类定义一个抽象类的格式如下:abstract class abstractClass,99,4.7 继 承4.7.3 abstract类和方法,第四章 java 中的对象、类、包和接口,abstract方法:只有

50、方法声明,没有具体实现的方法抽象类中可以包含抽象方法,为所有子类定义一个统一的接口,具体实现由子类完成。定义格式如下:abstract returnType abstractMethod(paramlist);说明:抽象类中不一定要包含abstract方法,但是,一旦某个类中包含了abstract方法,则这个类必须声明为abstract类。,100,4.7 继 承4.7.3 abstract类和方法,第四章 java 中的对象、类、包和接口,abstract方法举例:,Graphic share certain states(position,bounding box)and behavior

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号