如何使用继承
编写父类
[访问修饰符] class Pet {
//公共的属性和方法
}
编写子类,继承父类
[访问修饰符] class Dog extends Pet {
//子类特有的属性和方法
}
继承是Java中实现代码重用的重要手段之一。Java中只支持单根继承,即一个类只能有一个直接父类
理解继承
子类访问父类成员
1.访问父类构造方法
super();
super(name);
2.访问父类属性
3.访问父类方法
super.print();
注:
(1)使用super关键字,super代表父类对象
(2)在子类构造方法中调用且必须是第一句
(3)不可以访问父类中定义为private的属性和方法
super关键字来来访问父类的成员
1.super只能出现在子类的方法和构造方法中
2.super调用构造方法时,只能是第一句
3.super不能访问父类的private成员
继承条件下的构造方法的调用规则
1.子类构造方法没有通过super显式调用父类的有参构造方法,也没通过this显式调用自身其他构造方法
系统默认调用父类的无参构造方法
2.子类构造方法通过super显式调用父类的有参构造方法
执行父类相应构造方法,而不执行父类无参构造方法
3.子类构造方法通过this显式调用自身的其他构造方法,在相应构造方法中应用以上两条规则
子类继承父类的什么?
1.继承public修饰的属性和方法,不管子类和父类是否在同一个包里
2.继承默认权限修饰符修饰的属性和方法,但子类和父类必须在同一个包里
子类可以继承父类的所有资源吗?
不能被继承的父类成员:
1.private成员
2.子类与父类不在同包
3.构造方法
访问修饰符protected
可以修饰属性和方法
本类、同包、子类可以访问
使用继承
继承是代码重用的一种方式
将子类共有的属性和行为放到父类中
extends关键字:描述继承关系
一个类的构造方法中如果没有显示说明调用父类的哪个构造方法,默认调用父类的无参构造方法,通过super()实现,默认省略不写
在构造方法中this调用本类其他的构造方法语句和super调用父类构造方法的语句不能同时出现,二者只能选择一个
被默认修饰符修饰的属性只能在同一个包中访问
被private修饰的属性只能在本类直接访问
final修饰类没有子类,在定义一个类继承final修饰的类,会报错
java.lang.String类是使用final修饰的类,没有子类
String类是com.sun.org.apache.xpath.internal.operations.String,该String类不是final修饰的类,可以被继承