java教程-子类与继承.ppt
《java教程-子类与继承.ppt》由会员分享,可在线阅读,更多相关《java教程-子类与继承.ppt(79页珍藏版)》请在三一办公上搜索。
1、5.子类与继承,主讲:王华彬,面向对象的特性,继承性,狮子拥有动物的一切基本特性,但同时又拥有自己的独特的特性,这就是“继承”关系的重要性质。,Animal,Lion,子类继承父类的非私有的基本属性和方法,同时又能创建属于自己的属性的方法。,创建子类,通过在类的声明中加入extends子句来创建一个类的子类:class SubClass extends SuperClass,Java技术及其应用,创建子类,class Animal动物基本属性和方法;属性:体重、高度、腿的数量;方法:进食、消化、排泄;class Lion extends Animal 自动拥有动物类中允许继承的属性和方法;还可
2、添加狮子特有的属性和方法;比如:毛发颜色、性别、凶猛程度;咆哮、捕猎、睡觉;,Java技术及其应用,我们先认识一下类的“祖先”,即所有类的根类;想象一下,什么是类的祖先?public class Aclass maintestpublic static void main(String args)A a;,默认继承类,类:所有类的祖先class A相当于class A extends 如果缺省extends子句,则该类为的子类。,Java技术及其应用,类,它处于Java开发环境的类层次树的根部,其他所有的类都直接或间接地为它的子类。该类定义了一些所有对象最基本的状态和行为,例如:equals(
3、)判断两个对象引用是否相同,等价于=getClass()返回一个对象在运行时所对应的类的表示,从而可以得到相应的信息。toString()返回对象的字符串表示。,Java技术及其应用,class T1 public class Test1 public static void main(String args)T1 t1=new T1();T1 t2=new T1();t2=t1;boolean b;b=t1.equals(t2);System.out.println(b);,接下来,分析一下多重继承和多层继承,面向对象特性继承性,Java中支持单继承。思考:为什么取消多重继承?,动物,水栖生
4、活动物,陆栖生活动物,水陆两栖动物,动物类,马类,驴类,骡子类,优点:继承二者优点,缺点?,为什么取消多重继承?,鱼类,鲫鱼类,家猪类,猪类,面向对象特性继承性,Java中不支持多重继承。Java中支持多层继承。再思考一下继承的作用?,1、提高代码复用度,减少代码;2、方便扩展,在以前的基础上进行改进3、总之,取其精华、引入创新,本章学习内容,1、子类继承父类的属性和方法2、父类的属性和方法不够用怎么办?研究:子类增加新的属性和方法3、父类如果想保留某些属性和方法怎么办?研究:父类设定某些属性和方法不允许继承 4、父类的某些属性和方法,不太适合子类怎么办?研究:子类修改父类的属性和方法 5、父
5、类不想被继承怎么办?研究:为了保密性,类可设置为不允许继承6、父类允许被继承,但是不想被修改属性和方法怎么办?父类的某些属性和方法允许继承,但是不允许子类修改;,子类的继承性,若子类和父类在同一个包内,子类可以继承父类中访问权限设定为public、protected、default的成员变量和方法。若子类和父类不在同一个包内,子类可以继承父类中访问权限设定为public、protected的成员变量和方法。,例题 正常继承,class Aint x;void setX(int x)this.x=x;int getX()return x;,Java技术及其应用,class B extends A
6、double y=12;void setY(int y)this.y=y+x;double getY()return y;,例题 私有继承,class Aprivate int x;void setX(int x)this.x=x;int getX()return x;,Java技术及其应用,class B extends Adouble y=12;void setY(int y)this.y=y+x;double getY()return y;,子类的继承性,Java技术及其应用,子类对象引用,class A private int x=10;protected double y=12.56
7、;void f()y=y+x;System.out.printf(x=%d,y=%fn,x,y);class B extends A double z=12;void g()z=y+100;System.out.printf(z=%fn,z);class Example public static void main(String args)B b=new B();b.f();/调用从父类继承的方法。B类本没有该方法 b.g();/调用子类自己声明的方法。,练习一,Java技术及其应用,class Aprivate int x;int y;protected int z;,class B ex
8、tends Avoid f()x=1;void g()y=1;void h()z=1;,指出程序中的错误?,练习二,Java技术及其应用,package p1;class Aprivate int x;int y;protected int z;,package p2;class B extends Avoid f()x=1;void g()y=1;void h()z=1;,public,import p1.A;,指出程序中的错误?,知识点小结,1、只有public类,才能被另一个包中的类继承;2、引入另一个包中的public类,需要用import3、private类型的属性或方法不能被继承4
9、、public类型的属性或方法一定可以被继承5、defalut 和 protected类型呢?,本章学习内容,1、子类继承父类的属性和方法2、父类的属性和方法不够用怎么办?研究:子类增加新的属性和方法3、父类如果想保留某些属性和方法怎么办?研究:父类设定某些属性和方法不允许继承 4、父类的某些属性和方法,不太适合子类怎么办?研究:子类修改父类的属性和方法 5、父类不想被继承怎么办?研究:为了保密性,类可设置为不允许继承6、父类允许被继承,但是不想被修改属性和方法怎么办?父类的某些属性和方法允许继承,但是不允许子类修改;,如何修改父类的方法?通过方法重写实现!思考:方法的重载是什么?和重写的区别
10、?,同名!,class Aint x;void setX(int x),Java技术及其应用,class B extends Aint x;/隐藏父类中的变量xvoid setX(int x)/重写父类中的方法setX(),重写的方法必须与父类中的方法名字相同、参数个数和类型相同,返回类型相同或是子类。,class Afloat computer(float x,float y)return x+y;public int g(int x,int y)return x+y;class B extends Afloat computer(float x,float y)return x*y;,Ja
11、va技术及其应用,B b=new B();puter(8,9);b.g(12,8);,class AA g()return new A();A f()return new A();class B extends AB f()return new B();,Java技术及其应用,B b=new B();b.f();b.g();,返回值是子类,思考1:下程序是否是重写?,class Afloat computer(float x,float y)return x+y;public int g(int x,int y)return x+y;class B extends Adouble comput
12、er(float x,float y)return x*y;,思考2:下程序是否是重写?,class A public int f(int x,int y)return x+y;class B extends A public int f(int x,int y,int z)return x*y;,思考3:重写时方法的权限管理,重写父类的方法时,不可以降低方法的访问权限class Aprotected float f(float x,float y)return x-y;class B extends Afloat f(float x,float y)return x+y;,Java技术及其应
13、用,public float f(float x,float y),知识点小结,方法重写与方法重载的区别方法重写:子类方法与父类方法同名,且参数个数类型一致,返回类型相同或子类。方法重载:方法名相同,参数个数或类型不同,返回类型相同,Java技术及其应用,如果在子类中定义一个和父类一样的属性,则父类的属性被隐藏;如果在子类中重写了父类的方法,则父类方法被隐藏;如果在子类中需要调用被隐藏的属性或方法,怎么办呢?思考:在类和对象章节中,成员变量被局部变量和参数变量隐藏时,怎么处理?,引用父类成员,Java中通过super来实现对父类成员的访问。1.访问父类被隐藏的成员变量,如:super.vari
14、able2.调用父类中被重写的方法,如:super.Method(paramlist);3.调用父类的构造函数,如:super(paramlist);,分析程序的问题?,class A double f(double x,double y)return x+y;class B extends A double f(double x,double y)double m=f(x,y);return m+x*y;class cpublic static void main(String args)B b=new B();System.out.println(b.f(10.0,8.0);,分析程序的问
15、题?,class A double f(double x,double y)return x+y;class B extends A double f(double x,double y)double m=super.f(x,y);return m+x*y;class cpublic static void main(String args)B b=new B();System.out.println(b.f(10.0,8.0);,既然子类继承了父类的部分属性和变量,在创建子类对象时,直接调用子类的构造函数。此时,并没有显式的调用父类的构造函数,而子类对象却能调用父类的属性和方法,思考为什么?
16、当创建一个子类对象时,总是先调用父类的构造方法,再调用子类的构造方法。,class Grandparent public Grandparent()System.out.println(GrandParent Created.);class Parent extends Grandparent public Parent()System.out.println(Parent Created);class Child extends Parent public Child()System.out.println(Child Created);,Java技术及其应用,Child c=new Chi
17、ld();,思考:父类有多个构造方法,子类创建对象时调用哪个呢?,class Grandparent public Grandparent()System.out.println(GrandParent Created.);public Grandparent(int i)System.out.println(GrandParent Created2.);class Child extends Grandparent public Child()System.out.println(Child Created);,Java技术及其应用,Child c=new Child();,思考:父类有多个
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java 教程 子类 继承
![提示](https://www.31ppt.com/images/bang_tan.gif)
链接地址:https://www.31ppt.com/p-5436095.html