IBM java培训内部资料(面向对象设计思想)(共64张).pptx

上传人:醉**** 文档编号:7999005 上传时间:2022-03-11 格式:PPTX 页数:64 大小:1.28MB
返回 下载 相关 举报
IBM java培训内部资料(面向对象设计思想)(共64张).pptx_第1页
第1页 / 共64页
IBM java培训内部资料(面向对象设计思想)(共64张).pptx_第2页
第2页 / 共64页
点击查看更多>>
资源描述

《IBM java培训内部资料(面向对象设计思想)(共64张).pptx》由会员分享,可在线阅读,更多相关《IBM java培训内部资料(面向对象设计思想)(共64张).pptx(64页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、IBM HZ-ETP 2009 IBM Corporation面向对象设计思想为什么要使用面向对象彭鹏IBM Learning & Knowledge2022-2-27IBM HZ-ETP 2009 IBM CorporationAgenda函数函数类类对象对象构造函数构造函数2022-2-272Template DocumentationIBM HZ-ETP 2009 IBM Corporation函数(子程序)的概念与作用。函数(子程序)的概念与作用。定义一个函数的格式定义一个函数的格式 编写打印三个矩形的程序(用流水帐的方式与用函数的方式进行对比分析)。编写打印三个矩形的程序(用流水帐的

2、方式与用函数的方式进行对比分析)。返回值类型 函数名(参数类型 形式参数1,参数类型 形式参数2,.) 程序代码 return 返回值;返回值;其中:形式参数:形式参数:在方法被调用时用于接收外部传入的数据的变量。参数类型参数类型:就是该形式参数的数据类型。返回值:返回值:方法在执行完毕后返还给调用它的程序的数据。返回值类型:返回值类型:函数要返回的结果的数据类型。实参:实参:调用函数时实际传给函数形式参数的数据。如何理解函数返回值类型为如何理解函数返回值类型为void的情况的情况 函数(方法)2022-2-273Template DocumentationIBM HZ-ETP 2009 IB

3、M Corporation函数调用的格式函数调用的格式在函数中使用在函数中使用return提前返回提前返回函数调用的过程分析函数调用的过程分析函数的调用2022-2-274Template DocumentationIBM HZ-ETP 2009 IBM Corporation函数的重载就是在同一个类中允许同时存在一个以上的同名函数,只要它们的参数函数的重载就是在同一个类中允许同时存在一个以上的同名函数,只要它们的参数个数或类型不同即可。个数或类型不同即可。 如:如:public class Testpublic static void main(String args)int isum;do

4、uble fsum;isum=add(3,5);isum=add(3,5,6);fsum=add(3.2,6.5); public static int add(int x,int y) reutrn x+y;public static int add(int x,int y,int z)return x+y+z;public static double add(double x,double y) return x+y;函数的重载2022-2-275Template DocumentationIBM HZ-ETP 2009 IBM CorporationPractice 1编写一个类编写一个

5、类ETPTest2_1,使他具有一个方法为:,使他具有一个方法为:public int getArea(int i, int j)并返回并返回i * j的值。的值。再从外部调用这个方法再从外部调用这个方法传入相应,并打印出结果值传入相应,并打印出结果值2022-2-276Template DocumentationIBM HZ-ETP 2009 IBM CorporationPractice 2求下面代码输出结果求下面代码输出结果public class ETPTest2_2 private void change(int x) x = 3;System.out.println(x);publ

6、ic static void main(String args) int x = 5;ETPTest2_2 test2_2 = new ETPTest2_2();test2_2.change(x);System.out.println(x);2022-2-277Template DocumentationIBM HZ-ETP 2009 IBM CorporationPractice 3求下面代码输入结果求下面代码输入结果public class Main public void change(Obj obj) obj.x = 3;public static void main(String a

7、rgs) Main main = new Main(); Obj obj = new Obj(); System.out.println(obj.x); main.change(obj); System.out.println(obj.x);class Obj int x = 5;2022-2-278Template DocumentationIBM HZ-ETP 2009 IBM CorporationPractice 4private float getVar()return x; 以下哪些可以重载上面这条语句以下哪些可以重载上面这条语句A.float getVar() B.public

8、float getVar()C.public double getVar() D.protected float getVar() E.public float getVar(float f)2022-2-279Template DocumentationIBM HZ-ETP 2009 IBM Corporation函数的参数传递基本数据类型的参数传递 2022-2-2710Template DocumentationIBM HZ-ETP 2009 IBM Corporation函数的参数传递引用数据类型的参数传递2022-2-2711Template DocumentationIBM HZ-

9、ETP 2009 IBM Corporationstatic静态变量 当我们编写一个类时,其实就是在描述其对象的属性和行为,而并没有产生当我们编写一个类时,其实就是在描述其对象的属性和行为,而并没有产生实质上的对象,只有通过实质上的对象,只有通过new关键字才会产生出对象,这时系统才会分配关键字才会产生出对象,这时系统才会分配内存空间给对象,其方法才可以供外部调用。我们有时候希望无论是否产内存空间给对象,其方法才可以供外部调用。我们有时候希望无论是否产生了对象或无论产生了多少对象的情况下,某些特定的数据在内存空间里生了对象或无论产生了多少对象的情况下,某些特定的数据在内存空间里只有一份,例如所

10、有的中国人都有个国家名称,每一个中国人都共享这个只有一份,例如所有的中国人都有个国家名称,每一个中国人都共享这个国家名称,不必在每一个中国人的实例对象中都单独分配一个用于代表国国家名称,不必在每一个中国人的实例对象中都单独分配一个用于代表国家名称的变量。家名称的变量。编写使用静态变量统计一个类产生的实例对象的个数的程序编写使用静态变量统计一个类产生的实例对象的个数的程序2022-2-2712Template DocumentationIBM HZ-ETP 2009 IBM Corporationstatic静态方法在静态方法里只能直接调用同类中其它的静态成员(包括变量和方在静态方法里只能直接调

11、用同类中其它的静态成员(包括变量和方法),而不能直接访问类中的非静态成员。这是因为,对于非静态的法),而不能直接访问类中的非静态成员。这是因为,对于非静态的方法和变量,需要先创建类的实例对象后才可使用,而静态方法在使方法和变量,需要先创建类的实例对象后才可使用,而静态方法在使用前不用创建任何对象。用前不用创建任何对象。 静态方法不能以任何方式引用静态方法不能以任何方式引用this和和super关键字。与上面的道理一关键字。与上面的道理一样,因为静态方法在使用前不用创建任何实例对象,当静态方法被调样,因为静态方法在使用前不用创建任何实例对象,当静态方法被调用时,用时,this所引用的对象根本就没

12、有产生。所引用的对象根本就没有产生。 main() 方法是静态的,因此方法是静态的,因此JVM在执行在执行main方法时不创建方法时不创建main方法方法所在的类的实例对象,因而在所在的类的实例对象,因而在main()方法中,我们不能直接访问该类方法中,我们不能直接访问该类中的非静态成员,必须创建该类的一个实例对象后,才能通过这个对中的非静态成员,必须创建该类的一个实例对象后,才能通过这个对象去访问类中的非静态成员,这种情况,我们在以后的例子中会多次象去访问类中的非静态成员,这种情况,我们在以后的例子中会多次碰到。碰到。2022-2-2713Template DocumentationIBM

13、HZ-ETP 2009 IBM Corporation静态代码块 一个类中可以使用不包含在任何方法体中的静态代码块一个类中可以使用不包含在任何方法体中的静态代码块(static block ),当类被载入时,静态代码块被执行,且,当类被载入时,静态代码块被执行,且只被执行一次,静态块经常用来进行类属性的初始化。只被执行一次,静态块经常用来进行类属性的初始化。 类中的静态代码块被自动执行,尽管我们产生了类的多类中的静态代码块被自动执行,尽管我们产生了类的多个实例对象,但其中的静态代码块只被执行了一次。当个实例对象,但其中的静态代码块只被执行了一次。当一个程序中用到了其他的类,类是在第一次被使用的

14、时一个程序中用到了其他的类,类是在第一次被使用的时候才被装载,而不是在程序启动时就装载程序中所有可候才被装载,而不是在程序启动时就装载程序中所有可能要用到的类。能要用到的类。 2022-2-2714Template DocumentationIBM HZ-ETP 2009 IBM CorporationPractice 5下面这个类声明了静态变量,并且使用了下面这个类声明了静态变量,并且使用了静态代码块初始化变量静态代码块初始化变量public class StaticClass private static int i;static i = 3;public static void main

15、(String args) System.out.print(StaticClass.i);请创建一个类请创建一个类, 使用静态代码块初始化并打印出来看是否生效使用静态代码块初始化并打印出来看是否生效2022-2-2715Template DocumentationIBM HZ-ETP 2009 IBM Corporation下一章节对象和类对象和类2022-2-2716Template DocumentationIBM HZ-ETP 2009 IBM CorporationJAVA中类的声明类说明语法:类说明语法: 类修饰符 class 类名 extends 超类名 implements 接

16、口名 成员变量定义;方法定义;类体2022-2-2717Template DocumentationIBM HZ-ETP 2009 IBM CorporationJAVA中类的声明(续)类修饰符(类修饰符(Modifier):): public:允许其他类(没有限制)访问本类,一个源文件仅可以有一个public类 abstract:没有实例的抽象概念类 final:不能再被扩展,不包含子类的类;易于安全性的实现,或用于创建固定功能的类 缺省:可被当前包中的其他类访问父类继承声明:父类继承声明:extends 父类名父类名实现接口实现接口(interface):implements 接口名接口名

17、2022-2-2718Template DocumentationIBM HZ-ETP 2009 IBM CorporationJAVA中类的声明(续)例:例:public abstract class shapeclass rectangle extends shapefinal class roundrect extends rectangle.? final可以与可以与abstract一起使用吗?一起使用吗?2022-2-2719Template DocumentationIBM HZ-ETP 2009 IBM Corporation类的成员变量的声明声明成员变量声明成员变量member

18、的语法的语法修饰符 数据类型 变量名;引用:对象名引用:对象名.变量变量修饰符修饰符访问控制符 public:可被所有其他类引用 private:仅可被该类自身引用和修改,不能被其他任何类(包括子类)引用 2022-2-2720Template DocumentationIBM HZ-ETP 2009 IBM Corporation成员变量的声明(续) protected:该类自身、子类、同一包中的其他类 缺省:本包中的类static:类成员变量,对所有的实例一致,引用是前缀可使用类名或对象名final:数值不变常量,定义同时应对其进行初始化2022-2-2721Template Docume

19、ntationIBM HZ-ETP 2009 IBM Corporation成员变量的声明(续)例:例: class shapeprivate int x;private int y;static final float MaxArea=100.0f;. 2022-2-2722Template DocumentationIBM HZ-ETP 2009 IBM Corporation方法的声明定义对类内成员变量(数据)的操作定义对类内成员变量(数据)的操作方法的声明语法:方法的声明语法:修饰符 返回类型 方法名(参数列表) throws 例外名 方法体;谁可以调用方法、接受哪些参数、如何返回信息

20、谁可以调用方法、接受哪些参数、如何返回信息2022-2-2723Template DocumentationIBM HZ-ETP 2009 IBM Corporation方法的声明(续)修饰符修饰符(Modifier):): 访问控制符:public、private、protected static:静态方法,又称类方法 使用类名或对象名作为前缀,建议使用类名 在方法体中只能使用static变量和static方法 abstract:只有接口没有语句,要在子类中通过重新定义(override)来实现 final:不能被重新定义(override)2022-2-2724Template Docum

21、entationIBM HZ-ETP 2009 IBM Corporation方法的声明(续)返回类型:返回类型:void、return参数列表:值传递参数列表:值传递throws: 通告本方法中会产生的例外(异常)类型,提醒调用者要对相应的可能例外进行处理。当执行此方法并发生了例外时,程序会转入调用者编制的例外处理程序段。2022-2-2725Template DocumentationIBM HZ-ETP 2009 IBM Corporation方法的声明(续)例:例: class shapeprivate int x;static float MaxArea=100.0f; public

22、 void setx(int newx)x=newx;public static void setMA(float newMA)MaxArea=newMA;public final getx( )return x 2022-2-2726Template DocumentationIBM HZ-ETP 2009 IBM Corporation下一章节对象对象2022-2-2727Template DocumentationIBM HZ-ETP 2009 IBM Corporation对象的产生Person p1 = new Person();执行完后的内存状态执行完后的内存状态2022-2-27

23、28Template DocumentationIBM HZ-ETP 2009 IBM Corporation对象的产生当一个对象被创建时,会对其中各种类型的成员变量自动进行初始化当一个对象被创建时,会对其中各种类型的成员变量自动进行初始化赋值。除了基本数据类型之外的都是变量类型都是引用类型,如上赋值。除了基本数据类型之外的都是变量类型都是引用类型,如上面的面的Person及前面讲过的数组。及前面讲过的数组。 2022-2-2729Template DocumentationIBM HZ-ETP 2009 IBM Corporation对象的使用创建新的对象之后创建新的对象之后,我们就可以使用

24、我们就可以使用“ 对象名对象名.对象成员对象成员 ”的格式,来访的格式,来访问对象的成员(包括属性和方法)问对象的成员(包括属性和方法) class TestPersonpublic static void main(String args) Person p1 = new Person();Person p2 =new Person();p1.age = -30;p1.shout();p2.shout();程序运行的内存布局如下图程序运行的内存布局如下图 2022-2-2730Template DocumentationIBM HZ-ETP 2009 IBM Corporation对象的生命

25、周期 与基本类型的与基本类型的生命周期一样生命周期一样2022-2-2731Template DocumentationIBM HZ-ETP 2009 IBM Corporation对象的比较 “=”运算符与运算符与equals()方法的区别方法的区别怎样比较两个数组对象的内容是否相等怎样比较两个数组对象的内容是否相等 2022-2-2732Template DocumentationIBM HZ-ETP 2009 IBM CorporationPractice 6比较两个数组是否相等比较两个数组是否相等 1. 声明两个数组,并使他们各个元素相同 2. 调用Arrays.equals(a1,

26、a2)方法 3. 打印出结果值2022-2-2733Template DocumentationIBM HZ-ETP 2009 IBM Corporation实现类的封装性 如果外面的程序可以随意修改一个类的成员变量,会造成不可如果外面的程序可以随意修改一个类的成员变量,会造成不可预料的程序错误,就象一个人的身高,不能被外部随意修改,预料的程序错误,就象一个人的身高,不能被外部随意修改,只能通过各种摄取营养的方法去修改这个属性。只能通过各种摄取营养的方法去修改这个属性。 在定义一个类的成员(包括变量和方法)时,使用在定义一个类的成员(包括变量和方法)时,使用private关键关键字说明这个成员

27、的访问权限,这个成员成了类的私有成员,只字说明这个成员的访问权限,这个成员成了类的私有成员,只能被这个类的其他成员方法调用,而不能被其他的类中的方法能被这个类的其他成员方法调用,而不能被其他的类中的方法所调用。所调用。 2022-2-2734Template DocumentationIBM HZ-ETP 2009 IBM Corporation实现类的封装性 为了实现良好的封装性,我们通常将类的成员变量声明为为了实现良好的封装性,我们通常将类的成员变量声明为private,再通过,再通过public的方法来对这个变量进行访问。对一个的方法来对这个变量进行访问。对一个变量的操作,一般都有读取和

28、赋值操作,我们分别定义两个方变量的操作,一般都有读取和赋值操作,我们分别定义两个方法来实现这两种操作,一个是法来实现这两种操作,一个是getXxx()(Xxx表示要访问的成表示要访问的成员变量的名字),用来读取这个成员变量操作,另外一个是员变量的名字),用来读取这个成员变量操作,另外一个是setXxx()用来对这个成员变量赋值。用来对这个成员变量赋值。一个类通常就是一个小的模块,我们应该让模块仅仅公开必须一个类通常就是一个小的模块,我们应该让模块仅仅公开必须要让外界知道的内容,而隐藏其它一切内容。我们在进行程序要让外界知道的内容,而隐藏其它一切内容。我们在进行程序的详细设计时,应尽量避免一个模

29、块直接修改或操作另一个模的详细设计时,应尽量避免一个模块直接修改或操作另一个模块的数据,模块设计追求强内聚(许多功能尽量在类的内部独块的数据,模块设计追求强内聚(许多功能尽量在类的内部独立完成,不让外面干预),弱耦合(提供给外部尽量少的方法立完成,不让外面干预),弱耦合(提供给外部尽量少的方法调用)。用总统指挥一支军队的例子来说明这种效果。调用)。用总统指挥一支军队的例子来说明这种效果。 2022-2-2735Template DocumentationIBM HZ-ETP 2009 IBM Corporation类的封装所带来的优点 隐藏类的实现细节;隐藏类的实现细节;让使用者只能通过事先定

30、制好的方法来访问数据,可以方便让使用者只能通过事先定制好的方法来访问数据,可以方便地加入控制逻辑,限制对属性的不合理操作;地加入控制逻辑,限制对属性的不合理操作;便于修改,增强代码的可维护性;便于修改,增强代码的可维护性;2022-2-2736Template DocumentationIBM HZ-ETP 2009 IBM Corporation下一章节构造函数构造函数2022-2-2737Template DocumentationIBM HZ-ETP 2009 IBM Corporation构造函数的定义与作用 构造方法的特征构造方法的特征 它具有与类相同的名称; 它不含返回值; 它不能

31、在方法中用return语句返回一个值注意:在构造方法里不含返回值的概念是不同于“void”的,在定义构造方法时加了“void”,结果这个方法就不再被自动调用了。构造方法的作用:当一个类的实例对象刚产生时,这个类的构造方法的作用:当一个类的实例对象刚产生时,这个类的构造方法就会被自动调用,我们可以在这个方法中加入要完构造方法就会被自动调用,我们可以在这个方法中加入要完成初始化工作的代码。这就好像我们规定每个成初始化工作的代码。这就好像我们规定每个“人人”一出生一出生就必须先洗澡,我们就可以在就必须先洗澡,我们就可以在“人人”的构造方法中加入完成的构造方法中加入完成“洗澡洗澡”的程序代码,于是每个

32、的程序代码,于是每个“人人”一出生就会自动完成一出生就会自动完成“洗澡洗澡”,程序就不必再在每个人刚出生时一个一个地告诉,程序就不必再在每个人刚出生时一个一个地告诉他们要他们要“洗澡洗澡”了。了。 2022-2-2738Template DocumentationIBM HZ-ETP 2009 IBM Corporation构造方法的重载 和一般的方法重载一样,重载的构造方法具有不同个数或不同和一般的方法重载一样,重载的构造方法具有不同个数或不同类型的参数,编译器就可以根据这一点判断出用类型的参数,编译器就可以根据这一点判断出用new 关键字产关键字产生对象时,该调用哪个构造方法了。产生对象的

33、格式是:生对象时,该调用哪个构造方法了。产生对象的格式是:new 类名类名(参数列表参数列表) ;重载构造方法可以完成不同初始化的操作,重载构造方法可以完成不同初始化的操作, 如:如:p3=new Person(“Tom”,18);语句,会做这样几件事:创建指定类的新语句,会做这样几件事:创建指定类的新实例对象,在堆内存中为实例对象分配内存空间,并调用指定实例对象,在堆内存中为实例对象分配内存空间,并调用指定类的构造方法,最后将实例对象的首地址赋值给引用变量类的构造方法,最后将实例对象的首地址赋值给引用变量p3。 2022-2-2739Template DocumentationIBM HZ-

34、ETP 2009 IBM Corporation构造方法的一些细节 在在java每个类里都至少有一个构造方法,如果程序员没有在每个类里都至少有一个构造方法,如果程序员没有在一个类里定义构造方法,系统会自动为这个类产生一个默认一个类里定义构造方法,系统会自动为这个类产生一个默认的构造方法,这个默认构造方法没有参数,在其方法体中也的构造方法,这个默认构造方法没有参数,在其方法体中也没有任何代码,即什么也不做。没有任何代码,即什么也不做。 由于系统提供的默认构造方法往往不能满足编程者的需求,由于系统提供的默认构造方法往往不能满足编程者的需求,我们可以自己定义类的构造方法,来满足我们的需要,一旦我们可

35、以自己定义类的构造方法,来满足我们的需要,一旦编程者为该类定义了构造方法,系统就不再提供默认的构造编程者为该类定义了构造方法,系统就不再提供默认的构造方法了。方法了。 声明构造方法,如无特殊需要,应使用声明构造方法,如无特殊需要,应使用public关键字,在我关键字,在我们前面例子中,可以使用们前面例子中,可以使用private访问修饰符吗?访问修饰符吗? 2022-2-2740Template DocumentationIBM HZ-ETP 2009 IBM Corporationthis是什么? 如果如果func2方法被调用方法被调用 ,一定是事先已经有了一个存在的对象,一定是事先已经有了

36、一个存在的对象,func2被作为那个对象的方法被使用。被作为那个对象的方法被使用。 在在func2内部能引用别的对象内部能引用别的对象 ,同样也能引用,同样也能引用func2所属的那个对所属的那个对象。象。在在func2中,自己所属的那个对象的引用名称是什么呢?中,自己所属的那个对象的引用名称是什么呢? this关关键字在键字在java程序里的作用和它的词义很接近,它在函数内部就是程序里的作用和它的词义很接近,它在函数内部就是这个函数所属的对象的引用变量。这个函数所属的对象的引用变量。 2022-2-2741Template DocumentationIBM HZ-ETP 2009 IBM C

37、orporationthis引用句柄的存放位置每个成员方法内部,都有一个每个成员方法内部,都有一个this引用变量,指向调用这引用变量,指向调用这个方法的对象,类中的成员方法与个方法的对象,类中的成员方法与this之间的关系如图之间的关系如图2022-2-2742Template DocumentationIBM HZ-ETP 2009 IBM Corporationthis引用句柄的应用一个类中的成员方法可以直接调用同类中的其他成员,其实我们在一个方法一个类中的成员方法可以直接调用同类中的其他成员,其实我们在一个方法内部使用内部使用“this.其他成员其他成员”的引用方式和直接使用的引用方式

38、和直接使用“其他成员其他成员”的效果是一的效果是一样的,那样的,那this还有多大的作用呢?在有些情况下,我们还是非得用还有多大的作用呢?在有些情况下,我们还是非得用this关键关键字不可的字不可的 :让类的成员变量名和对其进行赋值的成员方法的形参变量同名是必要的,这让类的成员变量名和对其进行赋值的成员方法的形参变量同名是必要的,这样的代码谁看了都能明白这两个变量是彼此相关的,老手看到函数的定义,样的代码谁看了都能明白这两个变量是彼此相关的,老手看到函数的定义,就能揣摩出函数中的代码,大大节省了别人和自己日后阅读程序的时间。就能揣摩出函数中的代码,大大节省了别人和自己日后阅读程序的时间。 假设

39、我们有一个容器类和一个部件类,在容器类的某个方法中要创建部件类假设我们有一个容器类和一个部件类,在容器类的某个方法中要创建部件类的实例对象,而部件类的构造方法要接收一个代表其所在容器的参数。的实例对象,而部件类的构造方法要接收一个代表其所在容器的参数。构造方法是在产生对象时被构造方法是在产生对象时被java系统自动调用的,我们不能在程序中象调用系统自动调用的,我们不能在程序中象调用其他方法一样去调用构造方法。但我们可以在一个构造方法里调用其他重载其他方法一样去调用构造方法。但我们可以在一个构造方法里调用其他重载的构造方法,不是用构造方法名,而是用的构造方法,不是用构造方法名,而是用this(参

40、数列表参数列表)的形式,根据其中的形式,根据其中的参数列表,选择相应的构造方法。的参数列表,选择相应的构造方法。 2022-2-2743Template DocumentationIBM HZ-ETP 2009 IBM CorporationPractice 7创建一个类创建一个类Cla给出三个成员变量给出三个成员变量int a, b, c使用两个构造函数使用两个构造函数 public Cla() public Cla(int a, int b, int c)使用使用this句柄在构造函数中给变量赋值句柄在构造函数中给变量赋值在主函数中分别使用两个构造函数创建两个对象在主函数中分别使用两个构造

41、函数创建两个对象2022-2-2744Template DocumentationIBM HZ-ETP 2009 IBM Corporation下一章节继承继承2022-2-2745Template DocumentationIBM HZ-ETP 2009 IBM Corporation面向对象的概念子类子类是作为另一个类的扩充或修正而定义的一个类。子类是作为另一个类的扩充或修正而定义的一个类。bicycle(super class)Mountain bikesRacing bikesTandem bikessub class2022-2-2746Template DocumentationI

42、BM HZ-ETP 2009 IBM Corporation面向对象的概念继承继承使得子类可以利继承使得子类可以利用父类中定义的方法用父类中定义的方法和变量,就像它们属和变量,就像它们属于子类本身一样。于子类本身一样。class Employee protected String name; public void showInfo() System.out.println(name); class Manager extends Employee private String department; public void showInfo() System.out.println(name

43、); System.out.println(“Manager of ” + department); 2022-2-2747Template DocumentationIBM HZ-ETP 2009 IBM Corporation继承继承性是面向对象程序设计语言的一个基本特征,通过继承性是面向对象程序设计语言的一个基本特征,通过继承可以实现代码的复用。继承而得到的类为子类,被继承可以实现代码的复用。继承而得到的类为子类,被继承的类为父类,父类包括继承的类为父类,父类包括所有直接或间接所有直接或间接被继承的类。被继承的类。Java中不支持多重继承。通过在类的声明中加入中不支持多重继承。通过在类的

44、声明中加入extends子句来创建一个类的子类:子句来创建一个类的子类: class SubClass extends SuperClass 如果省略如果省略extends子句,则该类为子句,则该类为Object的子类。的子类。子类可以继承父类中访问权限设定为子类可以继承父类中访问权限设定为public、protected和和default的成员变量和方法,但是不能继承访问权限为的成员变量和方法,但是不能继承访问权限为private的成员变量和方法。的成员变量和方法。2022-2-2748Template DocumentationIBM HZ-ETP 2009 IBM Corporation

45、继承的例子2022-2-2749Template DocumentationIBM HZ-ETP 2009 IBM Corporation调用父类构造函数super(x,);调用父类构造函数时应遵循的原则:调用父类构造函数时应遵循的原则: 只能在子类中调用父类的构造函数. 调用父类构造函数时,必须使用super() 不要在父类构造函数前放任何子类构造函数代码。 如果子类中没有调用父类构造,会默认调用无参数的super()2022-2-2750Template DocumentationIBM HZ-ETP 2009 IBM Corporation类方法的覆盖方法覆盖即指在子类中重新实现父类中已

46、有的方法。方法覆盖即指在子类中重新实现父类中已有的方法。Java运行时系统根据调用该方法的实例的类型来决定调运行时系统根据调用该方法的实例的类型来决定调用哪个实现。用哪个实现。方法覆盖时应遵循的原则:方法覆盖时应遵循的原则: 覆盖后的方法不能比被覆盖的方法有更严格的访问前提条件。2022-2-2751Template DocumentationIBM HZ-ETP 2009 IBM Corporation面向对象的概念覆盖覆盖使得在子类中可以覆盖使得在子类中可以重新定义父类中已有的重新定义父类中已有的方法,从而是子类具有方法,从而是子类具有自己的行为。自己的行为。class Employee

47、protected String name; public void showInfo() System.out.println(name); class Manager extends Employee private String department; public void showInfo() System.out.println(name); System.out.println(“Manager of ” + department); 2022-2-2752Template DocumentationIBM HZ-ETP 2009 IBM CorporationPractice

48、8有一个父类有一个父类Car,内有属性:,内有属性:int maxSpeed方法:方法:void stop();有两个子类有两个子类BMW, QQ继承父类继承父类请调用父类构造方法,初始化赋值请调用父类构造方法,初始化赋值maxSpeed请重写请重写stop()方法,要求方法,要求 BMW当maxSpeed = 300; 打印语句“停车” QQ当maxSpeed = 120; 打印语句“停车”2022-2-2753Template DocumentationIBM HZ-ETP 2009 IBM Corporation3. 接口“对实现我的类对实现我的类,看起来都应该是我的样子看起来都应该是我

49、的样子”接口规定了一个类的基本形式接口规定了一个类的基本形式:自变量自变量,方法名方法名,返回类型返回类型.但不规定方法的主体但不规定方法的主体.接口的数据类型接口的数据类型:都默认为都默认为static,final只是一种形式只是一种形式,不涉及细节不涉及细节2022-2-2754Template DocumentationIBM HZ-ETP 2009 IBM Corporation3. 接口定义的形式public interface interfaceName extends SuperInterfaceList/常量定义和方法定义接口(接口(interface)作为特殊形式的抽象类,和

50、类)作为特殊形式的抽象类,和类(class)在使用上具有类似的约束。)在使用上具有类似的约束。一个一个public接口只能定义在同名的接口只能定义在同名的.java文件中文件中2022-2-2755Template DocumentationIBM HZ-ETP 2009 IBM Corporation3. 类对接口的实现用用implements子句来表示一个类实现某个接口。子句来表示一个类实现某个接口。在类体中可以使用接口中定义的常量,而且必须实现接在类体中可以使用接口中定义的常量,而且必须实现接口中定义的所有方法。口中定义的所有方法。利用接口可实现多重利用接口可实现多重 继承,即一个类可以

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 技术资料 > 其他杂项

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁