- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
尚硅谷_宋红康_第4章_高级类特性1
第4章高级类特性1;;本章内容;4.1 面向对象特征之二:继承;继 承(1) ;;;继 承(2) ;为什么要有继承?
多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些属性和行为,只要继承那个类即可。
此处的多个类称为子类,单独的这个类称为父类(基类或超类)。可以理解为:“子类 is a 父类”
类继承语法规则:
class Subclass extends Superclass{ };继 承(4) ;类的继承 (5);单继承举例;类的继承 (6);练习1;练习1;练习1;4.2 方法的重写(override);重写方法举例(1);class Parent {
public void method1() {}
}
class Child extends Parent {
private void method1() {}
//非法,子类中的method1()的访问权限private比被覆盖方法的访问权限public弱
}
public class UseBoth {
public static void main(String[] args) {
Parent p1 = new Parent();
Child p2 = new Child();
p1.method1();
p2.method1();
}
};1.如果现在父类的一个方法定义成private访问权限,在子类中将此方法声明为default访问权限,那么这样还叫重写吗?(NO)
2. 修改练习1.1中定义的类Kids,在Kids中重新定义employed()方法,覆盖父类ManKind中定义的employed()方法,输出“Kids should study and no job.”;;访问控制举例;访问控制举例;访问控制分析;;4.4 关键字super;关键字super举例; 1.修改练习1.1中定义的类Kids中employed()方法,在该方法中调用父类ManKind的employed()方法,然后再输出“but Kids should study and no job.”
2.修改练习1.3中定义的Cylinder类,在Cylinder类中覆盖findArea()方法,计算圆柱的表面积。考虑:findVolume方法怎样做相应的修改?
在TestCylinder类中创建Cylinder类的对象,设置圆柱的底面半径和高,并输出圆柱的表面积和体积。
附加题:在TestCylinder类中创建一个Circle类的对象,设置圆的半径,计算输出圆的面积。体会父类和子类成员的分别调用。;调用父类的构造器;调用父类构造器举例 ;调用父类构造器举例 ;this和super的区别;思考:
1).为什么super(…)和this(…)调用语句不能同时在一个构造器中出现?
2).为什么super(…)或this(…)调用语句只能作为构造器中的第一句出现?;;;class Creature{
public Creature(){
System.out.println(Creature无参数的构造器);
}
}
class Animal extends Creature{
public Animal(String name){
System.out.println(Animal带一个参数的构造器,该动物的name为 + name);
}
public Animal(String name , int age){
this(name);
System.out.println(Animal带两个参数的构造器,其age为 + age);
}
}
public class Wolf extends Animal{
public Wolf(){
super(灰太狼, 3);
System.out.println(Wolf无参数的构造器);
}
public static void main(String[] args){
new Wolf();
} };练习4;4.6 面向对象特征之三:多态性;多态性(2);多态性(3);虚拟方法调用(Virtual Method Invocation);多态小结;练习:继承成员变量和继承方法的区别;子类继承父类
若子类重写了父类方法,就意味着子类里定义的方法彻底覆盖了父类里的同名方法,系统将不可能把父类里的方法转移到子类中
对于实例变量则不存在这样的现象,即使子类里定义了与父类完全相同的实例变量
文档评论(0)