继承
优点:
- 减少代码冗余
- 提高了代码的可维护性
- 提高了代码的可重用性
缺点: 类的耦合性增强了
开发原则:高内聚,低耦合
内聚:自己完成某件事情的能力
耦合:类与类之间的关系
语法:
class Pet(){//父类
//公共的属性和方法
}
calss Dog extends Pet(){//子类只能继承一个父类
//子类特有的属性和方法
}
calss Penguin extends Pet(){//子类只能继承一个父类
//子类特有的属性和方法
}
子类访问父类成员:
访问父类构造方法://在子类构造方法中调用且必须式第一句
super();
super(name);
访问父类属性:
super.name;
访问父类方法:
super.print();
不能被继承的父类成员:
- private成员
- 子类与父类不在同包,使用默认访问权限的成员
- 构造方法
继承关系的初始化顺序:
重写规则
- 方法名相同
- 参数列表相同
- 返回值类型相同或者是其子类
- 访问权限不能严于父类
抽象类(abstract)
通过使用抽象类,限制实例化
abstract也可以用于方法—抽象方法
- 抽象方法没有方法体
- 抽象方法必须在抽象类里
- 抽象方法必须在子类中被实现,除非子类式抽象类
final用法
- 使用final类表示不希望再被其他类继承
- 使用final方法表示不希望再被重写
- 使用final常量表示不希望再被修改
访问修饰符总结:
方法重载和方法重写比较: