计算机软件及应用Java7javaoop特点课件

上传人:ni****g 文档编号:569992552 上传时间:2024-08-01 格式:PPT 页数:72 大小:819KB
返回 下载 相关 举报
计算机软件及应用Java7javaoop特点课件_第1页
第1页 / 共72页
计算机软件及应用Java7javaoop特点课件_第2页
第2页 / 共72页
计算机软件及应用Java7javaoop特点课件_第3页
第3页 / 共72页
计算机软件及应用Java7javaoop特点课件_第4页
第4页 / 共72页
计算机软件及应用Java7javaoop特点课件_第5页
第5页 / 共72页
点击查看更多>>
资源描述

《计算机软件及应用Java7javaoop特点课件》由会员分享,可在线阅读,更多相关《计算机软件及应用Java7javaoop特点课件(72页珍藏版)》请在金锄头文库上搜索。

1、java面向对象特性计算机软件及应用Java_7java oop特点java的OOP概念n类:抽象的集合系统类库中已定义的标准类用户自定义的类n对象(实例,instance):类的实际个体创建某个类的具体对象,类似变量声明类名 欲创建的对象名 new 类名(初始化参数表) ;例如: String s = new String( “Hello!” ) ; Date d=new Date(2008,07,30);2java中的OOP(续)java中类的组织结构n 基类:所有java类都派生自Object类n java的类组织在包(package)中n java提供的标准类库分布在一系列的包中,如j

2、ava.lang,java.util,等n 编程的过程,就是继承基类或标准类而创建、定义特殊子类的过程3java 中类的结构 类修饰符 class 类名 extends 父类名 implements 接口名 成员变量的定义;/用于描述对象的状态构造方法的定义;/用于构造和初始化新对象成员方法的定义;/用于实现对象的行为类声明部分类体部分4类的结构:例class Employee /类声明String name; String designation;String department; /3个成员变量,用于描述Employee对象的状态 public Employee(String eName

3、, String eDesign, String eDept)name = eName;designation = eDesign;department = eDept;/构造方法,用于初始化Employee对象 void showInfo( ) /成员方法,用于实现Employee对象的特定行为 System.out.println(name+ is a +designation+ at +department+.); 把把“雇员雇员”的共同状态(成员变量)和行为(方法)抽象出来,封装为的共同状态(成员变量)和行为(方法)抽象出来,封装为Employee类。类。5类的结构:例(续)publi

4、c class ClassAndObject /可执行程序的主类 public static void main(String args ) /main方法,程序执行的入口)Employee e1 = new Employee (“Robert ”,“Manager”,“Coffee shop” );/创建新对象并初始化 Employee e2 = new Employee (Tom ,Worker,Coffee shop ); /创建新对象并初始化 e1. showInfo( ); e2. showInfo( ); Robert is a Manager at Coffee shop.Tom

5、 is a Worker at Coffee shop.程序运行结果:定义主类主类并在其中创建和使用使用Employee类类的对象。6类的声明 类修饰符(Modifier): public:允许所有类访问本类,否则(缺省时)表示该类只能被本包中的其他类访问。1个源文件最多只能包含1个public类(如果有,则该类一定是主类);例 abstract:抽象类,不能创建实例的类(如:Shape类),只能创建其子类的实例。目的:使类的结构清晰,实现多态; final:不能再派生子类的类;用于创建固定功能的类,易于安全性的实现; 缺省缺省:可被当前包中的其他类访问 继承:extends 父类名 实现接口

6、(interface):implements 接口名7类的声明:例public abstract class Shapeclass Triangle extends Shapefinal class AcuteTriangle extends Triangle ?final可以与abstract一起使用吗?8成员变量:声明声明成员变量的语法 修饰符 数据类型 变量名;例: private int day, month, year;修饰符:成员变量的访问权限 public:可被所有类访问 protected:该类自身、子类、同一包中的其他类 缺省:可被本包中的类访问 private:仅可被该类自

7、身访问和修改,不能被其他任何类(包括子类)访问9类的封装与数据隐藏n通常,用private将成员变量隐藏起来,只允许本类自身的方法对其进行操作。n通过对方法设置public/protected/default等权限,将类的方法作为对外接口裸露出来,使外界只能通过这些方法来访问被隐藏的数据。例4-2。10成员变量:声明(续)qstatic :类变量(静态变量),为所有的实例所共享,引用时,类名或对象名.类变量qfinal:程序中不能修改其值,即常量,定义的同时应对其进行初始化qtransient :非永久变量qvolatile :并发控制访问:对象名.实例变量实例变量; 类名或对象名.类变量类变

8、量11成员变量的声明:例 class Circleprivate float radius;protected float area;static float max_radius100.0f;final float PI=3.14f; 12成员方法:语法结构方法的作用:定义对成员变量(数据)的某种操作13成员方法的结构语法: 修饰符 返回类型 方法名(参数列表) throws 异常类名 方法体; 方法的声明:方法的访问权限, 返回什么类型的数据, 接受哪些参数方法声明方法体14成员方法的声明修饰符(Modifier):q访问控制符:访问控制符:public、private、protected

9、、缺省-可被本包中的类访问qstatic:类方法,又称静态方法使用类名或对象名作为前缀来访问,建议使用类名作前缀static方法只能访问static变量和其自定义的局部变量优点:不必对类实例化操作就能使用其该方法,方便快捷。可开发通用工具,如数学计算: Math.sqrt( )qabstract:只有方法名,没有方法体,要在子类中通过重写(override)来实现qfinal:不能被子类所重写(override)(如triangle类的求重心方法)qnative:其他语言实现qsynchronized:并发线程控制15成员方法的声明(续) 返回类型: 基本数据,类,void(无返回值), 注意

10、return 参数列表:参数类型可为类类型 throws 异常类名 : 本方法中会产生的异常类型,提醒调用者要对相应的可能异常进行处理。当运行时发生异常时,程序会自动转入异常处理程序(通常由程序员事先编制)去执行。16方法体n在方法体中定义的变量称为局部变量。p生命周期:程序流进入方法体时创建,程序流退出方法时撤消。p局部变量使用之前必须初始化。例:错在哪里?p局部变量名若与类的成员变量名相同,则后者被隐藏(成员变量需通过this来访问,例4-3)。n在方法体中可以访问本类所有的类变量,可以调用本类中定义的其它方法 (其中,static方法只能直接调用本类的static方法和static变量)

11、。17 this 为对当前对象的引用(即表示当前对象)。public class MyDate private int day, month, year; public MyDate(int day, int month, int year) this.day = day; /如果不加this会有什么结果? this.month = month; this.year = year; public String tomorrow( )this.day = this.day+1; /如果不加this会有什么结果?return this.day+/+this.month+/+this.year; p

12、ublic static void main( String args) MyDate d = new MyDate(12,4,2004); System.out.println(d.tommorrow(); “this ”关键字类变量day被屏蔽没有影响18成员方法的定义(例) class Circleprivate int radius;static float max_area =100.0f; public void set_radius(int my_radius)radius= my_ radius;/无返回值public int get_radius( )return radiu

13、s;/返回值为int型public static void setMA(float k)max_area= k;/注意:在static方法中,只能访问static变量和自定义的局部变量19方法的参数n方法的参数要“有名有型”,参数的作用域在本方法中,在方法体中可以跟方法内的局部变量一样使用。n方法调用中,参数是值传递 。方法是传值的,方法调用不会改变实参的值。 20引用类型引用类型值传送值传送基本类型基本类型值传送值传送地址传送地址传送值传送与地址传送3.143.14AB3.14AB0x2F0x2FABn方法定义:如 void deposit(double money) 形参 n方法调用:如

14、myAccount.deposit(1000) 实参 例4-4212223各变量的作用域成员变量的作用空间局部变量的作用空间方法参数的作用空间异常处理参数的作用空间24例:银行业务的面向对象设计 要求:帐户存/取款、查询帐户和开户日期等 面向对象的分析(OOA)对象模型抽象:银行帐户银行帐户对象模型分析: 余额、开户日期、存、取、查余额、开户日期、存、取、查 面向对象的设计(OOD)对象模型的实现:类及其成员定义 BankAccount类类 balance, interest_rate等成员等成员 getBalance( ), deposit( )等方法等方法25例:银行业务银行帐户类Bank

15、Account数据:余额、利率、开户日期操作:查询余额、存款、取款 查询利率、设置利率主类主类UseAccountmain( )方法:创建BankAccount对象,并对其进行相应操作UseAccount.java26class BankAccount /银行账户类银行账户类 private float balance; /默认初值为默认初值为0 private float interest_rate; private int day,month,year; public float get_balance( ) return balance;/查询余额查询余额 public void dep

16、osit (float money) balance+=money ;/存钱存钱public class UseAccount /主类,其主类,其main()main()作为可执行程序的入口作为可执行程序的入口 public static void main( String args ) BankAccount hailiang_Account=new BankAccount(); /创建创建BankAccount对象对象 hailiang_Account.deposit (1000.0f); System.out.println(“本账户余额为本账户余额为:$:$ +hailiang_Acc

17、ount.get_balance();例:银行业务本账户余额为本账户余额为:$:$1000.0程序运行结果:程序运行结果:27class BankAccount /银行账户类银行账户类 private float balance; private float interest_rate; private Date start_date=new Date();/Date类的成员变量类的成员变量start_date public float get_balance( )return balance; public float get_interest_rate ( )return interest

18、_rate ; public Date get_start_date( )return start_date;/注意返回值类型注意返回值类型 public void set_start_date(int d,int m, int y )class Date /日期类日期类 private int day=25, month=10,year=2002; public String showDate( ) return year+-+month +- +day;public class UseAccount /主类主类 public static void main( String args) B

19、ankAccount hailiang_Account=new BankAccount( ); System.out.println(本账户开户日期为本账户开户日期为: : +hailiang_Account.get_start_date().showDate();本账户开户日期为本账户开户日期为:2002-10-25:2002-10-25程序运行结果程序运行结果:28类的定义(封装)小结n类中的数据常设置为private,而多使用public方法来操作数据,并作为对外的访问接口。n不要定义太庞大的类,要把无关的功能适当分离,分解为逻辑清晰的多个类,把逻辑上相关联的数据封装成新的类来使用。 如

20、:可定义A类的对象作为B类的成员变量,如上例中的Date类对象作为BankAccount类的成员 。n培养良好的编程风格(标识符命名,缩进),提高可读性,可维护性。29类的定义实验n实验3:编写一个复数类,具有实部、虚部2个成员变量,可以完成加、减、乘、除、读取实部和虚部等功能。另编写一个主类,在主类中创建2个复数对象,并对它们进行加、减、乘、除运算。 (第7周上机实验)30复数的四则运算法则n在数学里,将平方是负数的数定义为纯虚数。所有的虚数都是复数。这种数有一个专门的符号“i”(imaginary),它称为虚数单位。定义为i2=-1 n复数的四则运算规定为: (abi)(cdi)(ac)(

21、bd)i, (abi)(cdi)(ac)(bd)i, (abi)(cdi)(acbd)(bcad)i, (c与d不同时为零) (abi)(cdi)(ac+bd/c2+d2)(bcad/c2+d2) (c+di)不等于0 复数有多种表示形式,常用形式 zabi 叫做代数式。 31类、文件和可执行程序n每个语法正确的源文件(.java)都可编译为.class文件?对!n每个.class文件都可执行? 错! 除非其主类有main()方法n每个.java文件都有一个主类,并且它是public的? 前半句对,后半句错。n不可执行的.class文件有用吗?怎么用?ObjectAndClass.javaOb

22、jectAndClass.classEmployee.javaEmployee.class编译编译访问例: ObjectAndClass类(可执行类) Employee类(非可执行类),判断以下命题是否正确:32方法重载(overloading)n用同一个名字来表示若干个不同方法。n这些方法同名的原因,是因为它们最终的功能和目的都相同,但由于在完成同一功能时,可能遇到不同的具体情况,所以需要定义含不同内容的方法。 n是多态的一种体现。(多态包括方法的重载和重写)33方法重载的类型如何区分重载不同类中的同名方法:冠以对象名(或类名)以示区别如:Chinese.speak();American.s

23、peak() 同类中的同名方法:用不同的参数列表来加以区别34同类中的方法重载:例 要打印不同类型的数据,如int, float, String等,实现手段有2种:分别定义不同名的多个方法,如: printInt(int); printFloat(float); printString(String)等 但这样给程序开发、使用和维护都带来很多麻烦。使用同一个方法名print ( ),通过区别不同的参数,来分别定义和调用不同方法,即“方法重载”:如:print (int i); print (float f); print (String s);35方法重载的条件n方法名必须相同n方法的参数必须

24、不同(形参的个数、类型、顺序的不同)。static void print(String s, int i) static void print(int i, String s) /以上二者的参数顺序不同,也构成重载36方法重载的特点n返回类型、修饰符可相同或不相同。(即,返回类型和修饰符都不是重载的标志。)n效果:利用“重名”现象提高程序的抽象度和简洁性。n编译时多态。(由编译器在编译时根据参数的区别,来绑定对应的方法体)37构造方法(constructor)n为什么要有构造方法在每个对象一诞生时,就应给它指定一个初始状态(即成员变量的初值)。虽然系统会赋给默认初值,但往往并不合适;所以在创建

25、一个新对象时,需用构造方法完成合法的初始化,使成员变量的初始化工作不依赖于系统自动完成。n构造方法是一种特殊的成员方法,构造方法与类同名。n在创建每个新对象时被调用执行,以保证新对象的各成员都有合法、确定的初值。38构造方法(例)class Dog private int weight ;public Dog( ) / Dog类的构造方法weight = 42 ; /实现对象状态(成员变量)初始化。所有对象初值均为42 public Dog(int i) / Dog类的构造方法,重载weight = i ; /由用户指定对象初值 public int getWeight( ) return w

26、eight; public void setWeight(int myWeight) weight = myWeight;public class UseDogpublic static void main(String args)Dog d = new Dog( ); /用构造方法创建新对象,并赋给引用变量dSystem.out.println(The dogs weight is + d.getWeight();The dogs weight is 42运算结果:39构造方法的特点n构造方法与成员方法不同,不能被直接调用,必须通过new调用; n创建对象时,利用运算符 new 在内存中开辟

27、专用空间,存放指定的实例(对象),这时会执行类的构造方法,初始化新对象的成员变量. 【对象是通过构造方法创建的,是动态的】例:Date d = new Date (22, 5, 2003);40构造方法的特点(续)n 访问权限:public(即,所有类都可以创建该类的实例), private, protected, 缺省。n 构造方法无返回类型,但声明时也不加void。n 构造方法可以完成更多的操作,而不仅仅局限于变量的初始化.(如,可在构造方法中调用其他方法等。)n 一个类可创建多个构造方法:构造方法的重载。41构造方法的缺省n每个类至少有一个构造方法。n当程序中未定义任何构造方法时,系统在

28、编译时,会提供一个缺省构造方法:无参数,方法体中无内容n缺省构造方法的初始化数据初值: 数值型:数值型:0; 布尔型:布尔型:false; 引用型:引用型:null; 字符串型:字符串型:null;n一旦程序员定义了构造方法,就不再有缺省构造方法42构造方法的缺省:例class Dog /类中未定义构造方法private int weight ;public int getWeight() return weight;public void setWeight(int myWeight) weight = myWeight;public class UseDogpublic static vo

29、id main(String args)Dog d = new Dog(); /用缺省的构造方法创建对象 /Dog d = new Dog(40);是否可行?System.out.println(The dogs weight is + d.getWeight();The dogs weight is 0运算结果:43以“this” 调用构造方法nthis(参数列表) 表示调用本类的构造方法n在一个构造方法中,当使用this(参数列表) 时,将调用参数匹配的另一个构造方法。例4-8n使用this调用本类的其他构造方法时,this应是第一个可执行语句44以“this” 调用构造方法Name: U

30、nknown Salary:045java中对象的生命周期n对象是某一个类的实例,是运行时动态生成的。n生命周期:对象的创建、使用、回收46java中对象的创建n对象的声明 Point p1,p2;n对象的实例化 p1 = new Point(); p2 = new Point();p new 返回对象的引用 Point p3 = p2;p对象的声明和实例化可写在同一条命令中 Point p4 = new Point();p1 0xabcdxy 0.00.00xabcd47对象初始化三步曲n为对象分配内存空间,首先将其成员变量默认初始化:0 (数值型,字符型)false (逻辑型)null (

31、引用型)对象建立后,有明确的状态,属性都有值。n执行显式初始化(执行类成员的赋值表达式) public class Point int x=2; int y=2; /显式初始化 public Point(int a, int b)/构造方法 x=a;y=b; ; n执行构造方法,完成对象初始化p1xy 2 2p1xy 00p1xy 2145 p1=new Point(21, 45)48对象的使用n访问对象的成员变量 date1.dayn调用对象的方法 date1.setDate()n注意对象中成员变量和方法的访问权限。49对象的回收垃圾回收机制(garbage collection):java

32、运行环境当确定某个对象不再被使用时,将其删除。一个对象在没有引用指向它时,可作为垃圾被回收。垃圾收集器:java运行环境中的垃圾收集器周期性地释放不用对象所占用的空间,自动实现内存回收。50C+:A *a=new A( );A *b=a;A *c=a;java :A a=new A( );A b=a;A c=a;a b c b c(指针悬空)a b c b ca 使用完,显式删除其对象:使用完,显式删除其对象:delete a; a 使用完,显式删除其引使用完,显式删除其引用:用: a= null ; 对象的清除只有所有引用都删除后,才能回收只有所有引用都删除后,才能回收此对象。此对象。 51

33、子类表示类之间一种“属于”( 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 ; 类的继承:子类52 java中用 extends 关键字声明继承关系。public class Employee String

34、 name ;Date hireDate ;Date dateofBirth ;String jobTitle ;int grade ;子类是从已有的类创建新类的一种方法。public class Manager extends Employee String department ;类的继承:Extends 关键字53类的继承创建类时指明它为某类的子类 extends 父类(超类)名 父类 o 来自系统类库 o 用户自定义的类 子类继承除 private外的所有父类成员(带private 修饰符的属性、方法是不能被继承的) java是单继承的,不支持多重继承。即, extends后的类名只能

35、有一个。54类的继承:扩展 子类对父类可做扩展和特殊化。子类继承父类的属性、功能(方法),子类中只需声明特有的成员即可。创建新的成员:变量和方法,如 String department;重新定义 父类中已有的变量 :父类变量被隐藏重新定义 父类中已有的方法 :重写 or 覆盖(overriding ) 55子类可以改变从父类继承的方法重写;被重写方法的方法名、返回值、参数列表要与父类方法完全一样;重写方法的访问权限不能缩小;不能抛出新的异常。例:4-11类的继承:方法重写(Overriding)56上溯造型子类实例可当成父类实例来使用,系统默许。即,父类变量可以指向子类实例,称上溯造型(upc

36、ast)。 例: Father 父类 Son 子类 fatherMethod( ) fatherMethod( )/重写 , sonMethod( ) Father f1 = new Father( ); Son s= new Son( ); Father f2 = new Son( ); s.fatherMethod( ); f2.fatherMethod( ); /对!父类变量可以指向子类实例, 上溯造型/对!子类变量访问父类中声明的方法(继承或重写)/对!这时访问的是父类方法,还是子类(重写)的方法?f1.sonMethod( ); /错!父类实例中没有子类方法f2.sonMethod(

37、 ); /错!将父类变量当成子类变量来使用,还必须满足一定的条件。取决于实例类型57 由于上溯造型的存在,允许父类变量指向子类实例。父类变量既可以指向父类实例,也可以指向子类实例。 Employee e = new Manager( ); 但是,通过该父类变量(如e)只能访问父类中声明的成员变量和成员方法(至于是父类的方法还是子类重写的方法,则要看e当时的实例类型),而子类所扩展的方法被隐藏,不能被父类变量e访问。思考:若想访问,则应该如何操作?运行时,根据e所引用对象的类型来确定使用的是父类还是子类(重写的)方法,如下例: Employee e = new Employee( ); Mana

38、ger m=new Manager( ); e.getDetails( ); /调用父类方法 e=m;/上溯造型, e指向子类实例 e.getDetails( ); /调用子类(重写)的方法运行时多态58下溯造型将父类变量强制转换为子类变量,可访问子类所扩展的成员,如:(Son) f).SonMethod(); 前提条件:只有当父类变量正指向子类实例时,才能访问子类所特有的成员。如 例1: Father f = new Son(); (Son) f).SonMethod(); f. SonMethod(); 例2: Father f=new Father(); (Son) f).sonMeth

39、od(); 例:SonTest.java/对!f正指向子类实例/编译能通过,但运行时报错/编译出错!f需转换为子类变量类型59 测试对象的类型,返回布尔值 Empolyee e = new Manager(); 则 e instanceof Manager 为true; 为保证下溯造型成功,通常先用instanceof进行判断,如: if (f instanceof Son) (Son) f).SonMethod( ); ;/下溯造型 instanceof 运算符60上溯造型小结 上溯造型:父类的变量可以指向子类对象,系统默许。 上溯造型中,父类变量即使指向子类实例,也只能访问父类中定义的变量

40、和方法。 例:Father f2 = new Son( ); /上溯造型f2.sonMethod(); /编译时报错!f2是父类变量,只能访问父类定义的成员 运行时多态:在运行时根据对象的具体情况来决定调用的方法是父类的还是子类的。 如f2.fatherMethod( );访问的方法是父类方法还是子类方法,取决于f2当时所指向的对象。下溯造型:1)父类变量强制转换为子类变量。2)转换后,父类变量能否访问子类方法,还取决于该变量当时是否指向子类实例。61晚联编A的变量aXA的方法aM()类A类BB的变量aXB的方法aM()继承自类A 类AA的变量aX实例a实例b继承的aXB的变量aX 类BA a

41、=new A( );B b=new B( );A a1=b;a.aX a.aM()b.aX b.aM()a1.aX a1.aM()a1.aM():动态/滞后联编,子类B的实例和方法其他(如a1.aX ):静态联编.在编译时指定62基于上溯造型, java中允许构造如下类型的数组:Employee staff = new Employee3;staff0 = new Manager( );staff1 = new Worker();staff2 = new Employee(); staff 是由多种类型的对象组成的。父类的引用变量指向子类实例,系统默许构造不同类型数据的集合63类的继承:thi

42、s , super引用类的成员变量或方法时的前缀this: 指向当前类的成员(方法变量) super: 指向父类的成员(只能上溯一层) 例:Employee父类 Manager子类managerMethod( ) this.getDetails( ); /调用子类的方法, /也可以省略this super.getDetails( ); /调用父类的方法 例:ThisAndSuper.java64n super指向该关键字所在类的父类。public class Employee private String name ;private int salary;public String getDe

43、tails( )return “Name: ”+name+“nSalary:”+salary;public class Manager extends Employee private String department ;public String getDetails( ) /子类重写方法return super.getDetails( )+nDepartment: “+department;super关键字65 缺省:自动调用不带参数的父类构造方法。 如需调用含参数的父类构造方法,则需在子类构造方法的第一行通过super( )调用。 class Employee String name;

44、public Employee( String n) name=n;class Manager entends EmployeeString department;public Manager( String s, String d) super(s);/调用父类构造方法,来初始化从父类继承的变量name this.department=d; 调用父类的构造方法66构造方法的执行顺序n子类的构造方法执行前,都必须先调用父类的构造方法;p子类的构造方法中,如调用父类含参数的构造方法,需用super关键字,且该调用语句必须是子类构造方法的第一个可执行语句。例:4-11p子类的构造方法中,如果不用s

45、uper语句调用父类的构造方法,则会先自动执行父类不含参数的构造方法,再执行子类构造方法(如果父类中没有不含参数的构造方法,则编译出错)。例4-11改p如果子类未定义构造方法,则在创建子类对象时,会先自动执行父类不含参数的构造方法(如果父类中没有不含参数的构造方法,则编译出错)。67构造方法的执行顺序:例class Bread Bread( ) class Cheese Cheese( ) class Lettuce Lettuce( ) class Meal Meal( ) class Lunch extends Meal Lunch( ) class PortableLunch exten

46、ds Lunch PortableLunch( ) class Sandwich extends PortableLunch Bread b = new Bread( ); Cheese c = new Cheese( ); Lettuce l = new Lettuce( ); Sandwich( ) . public static void main(String args) new Sandwich( );/ 程序入口,调用子类构造方法程序入口,调用子类构造方法68构造方法的继承:调用顺序注意构造方法的调用顺序:按继承顺序依次调用父类不含参数的构造方法,直到到达本子类依次执行本子类成员对

47、象的构造方法最后,执行本子类的构造方法Meal( ) Lunch( ) PortableLunch( ) Bread( ) Cheese( ) Lettuce( ) Sandwich( )69Object 及其子类n Object类是所有类的祖先类,它定义了所有对象都普遍具有的状态和行为。 如:对象之间的比较、将对象转换为字符串、返回对象所属的类等等。70在Object的子类中可以重写的方法:clone() equals()finalize() toString() :返回对象的字符串表示,表达的内容因具体的对象而异 在Object的子类中不能重写的方法(final方法):getClass() notify() notifyAll() wait()Object 及其子类71Object的equals方法 比较两个对象是否相同(引用值是否相同) public boolean equals(object obj); 如:a.equals(b);String类重写了equals方法,改为比较两个String对象的内容是否相同 如:str1.equals(str2);72

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 医学/心理学 > 基础医学

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号