欢迎来到天天文库
浏览记录
ID:24284196
大小:440.00 KB
页数:46页
时间:2018-11-13
《第11章 继承和多态》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、11.1引言11.2父类和子类11.3使用super11.4方法覆盖11.5覆盖和重载11.6对象类Object和它的toString()方法11.7多态性、动态绑定和一般程序设计11.8对象转换和instanceof运算符11.9对象引用的类型转换和instanceof运算符11.10Object类的equals()方法常常需要被覆盖11.11数组线性表ArrayList类11.12用数组线性表类ArrayList来自定义存储任意对象的栈类11.13Protected数据和方法11.14final修饰类、方法和数据补充:11
2、.15数据域和静态方法的隐藏补充:11.16初始化模块第11章继承和多态11.1引言动物类层次举例一般具体动物蛇蜥蜴鲸爬行动物哺乳动物狗巨蜥壁虎壁虎是一种蜥蜴爬行动物是动物的一种最顶端的类是Object,它在java.lang中定义,是所有类的始祖。一个类可以有多个子类,也可以没有子类,但它必定有一个父类(Object除外)。11.2父类和子类parentclass父类子类childclassbaseclass基类派生类derivedclasssuperclass超类次类subclass扩展类extendclass继承:子类从
3、父类中继承可访问的数据域和方法,也可以添加新数据域和新方法。publicclassA{publicinta=10;protectedintb=20;intc=30;privateintd=40;publicintgetD(){returnd;}}publicclassBextendsA{publicinte;publicvoidtryVariables(){System.out.println(a);//允许System.out.println(b);//允许System.out.println(c);//同包则允许Syste
4、m.out.println(d);//不允许System.out.println(getD());//允许}}不能继承访问权限为private的成员变量和方法注意:1、子类可以继承父类中可访问的【访问权限设定为public,protected或无权限修饰符(若同包)】成员变量和方法。但是不能继承访问权限为private的成变量和方法。2、父类的构造方法不能被子类继承。3、一个类只能有一个直接父类。4、父类包括所有直接或间接被继承的类。5、子类和父类的关系为isaclassBextendsA{}classA{}publiccla
5、ssPerson{publicStringname;publicStringgetName(){returnname;}}publicclassEmployeeextendsPerson{publicintemployeeNumber;publicintgetEmployeeNumber(){returnemployeeNumber;}}publicclassManagerextendsEmployee{publicStringresponsibilities;publicStringgetResponsibilities()
6、{returnresponsibilities;}}Manager继承了Employee、Person和Object类三个类的UML表示补充:继承的本质classA{privateintx=1;inty;voidprintX(){System.out.println(x);}}classBextendsA{intz;}publicclassTest{publicstaticvoidmain(String[]s){Bb=newB();b.printX();}}x=1y=0printX()z=0bB类对象A类对象Object类对象
7、toString()clone()其它…11.3使用superthis用途1:成员变量和局部变量重名时this.用途2:构造方法中调用另一构造方法,简化代码。如this(参数)super用途1:使用从父类继承来的被隐藏属性super.变量使用从父类继承来的方法也可间接访问这些属性用途2:子类构造方法中调用父类的构造方法super()super(参数)用途3:调用父类的普通方法super.方法(参数)11.3.1在子类构造方法中调用父类的构造方法构造方法不会被继承调用父类的构造方法必须用super,而且必须是构造方法的第一条语句
8、语法:super()或super(参数)classStudent{Stringname;intid;Student(Stringname,intid){this.name=name;this.id=id;}}classHiStudentextendsStudent{Strin
此文档下载收益归作者所有