1.为什么使用继承
方便修改代码,减少代码量
2.如何使用继承
1.编写父类
class Pet {
//公共的属性和方法
}
2.编写子类,继承父类,且只能继承一个父类
class Dog extends Pet {
//子类特有的属性和方法
}
3.super()的用法
1.子类访问父类成员
访问父类构造方法 使用关键字super,super代表父类对象
在子类构造方法中调用且必须是第一句
super();
super(name);
2.访问父类属性
super.name;
3.访问父类方法
super.print();
4.子类不能继承哪些父类的资源
1.private成员
2.子类与父类不在同包,使用默认访问权限的成员
3.构造方法
5.在何处使用继承?
1.继承与真实世界类类似
只要说猫是哺乳动物”,猫的很多属性、行为 就不言自明了
符合is-a关系的设计使用继承
2.继承是代码重用的一种方式
将子类共有的属性和行为放到父类中
6.抽象类
java中使用抽象类,限制实例化
public abstract class Pet {
}
abstract也可用于方法——抽象方法
1.抽象方法没有方法体
2.抽象方法必须在抽象类里
3.抽象方法必须在子类中被实现,除非子类是抽象类
public abstract void print();
//没有方法体
7.final用法
Penguin类不希望再被其他类继承?
使用final类
public final class Penguin extends Pet {
//…最终版的类
}
方法不希望被重写?
使用final方法
public final void print () {
//…最终版的方法
}
属性值不希望被修改?
使用常量
public class Penguin {
// 最终版的属性值
final String home ="南极";// 居住地
public void setHome(String name){
this.home=home; //错误,不可再赋值
}
}
8.总结
继承:
1.符合is-a的关系
2.使用extends关键字
3.代码复用
方法重写的规则:
1.方法名相同
2.参数列表相同
3.返回值类型相同或者是其子类
4.访问权限不能严于父类
super关键字来访问父类的成员:
1.super只能出现在子类的方法和构造方法中
2.super调用构造方法时,只能是第一句
3.super不能访问子类的private成员
抽象类和抽象方法:
1.抽象类不能被实例化
2.抽象类可以有0~多个抽象方法
3.非抽象子类必须重写父类的所有抽象方法
final修饰符:
1.修饰的类,不能再被继承
2.修饰的方法,不能被子类重写
3.修饰的变量将变成常量,只能在初始化时进行赋值