为什么使用继承
使用继承优化后
- 方便修改代码
- 减少代码量
如何使用继承
使用继承
编写父类
class Pet{
//公共的属性和方法
}
编写子类,继承父类
class Dog extends Pet{>>>只能继承一个父类
//子类特有的属性和方法
}
class Penguin extends Pet{
}
extends 继承关键字 对比 C#用“:”
子类访问父类成员>>>使用super关键字,super代表父类对象
访问父类构造方法
super(); >>>在子类构造函数方法中调用且必须是第一句
super(name);>>>在子类构造函数方法中调用且必须是第一句
访问父类属性
super.name;
访问父类方法
super.print();
继承
访问修饰符protected
- 可以修饰属性和方法
- 本类、同包、子类可以访问
访问修饰符总结
在何处使用继承
继承与真实世界类似
- 只要说“猫是哺乳动物”,猫的很多属性、行为就不言自明了
- 藏獒是一种狗
符合is-a关系的设计使用继承
继承是代码重用的一种方式
将子类共有的属性和行为放到父类中
方法重写
方法重写的规则
- 方法名相同
- 参数列表相同
- 返回值类型相同或者是其子类
- 访问权限不能严于父类
方法重载与方法重写
super关键字来访问父类的成员
- super只能出现在子类的方法和构造方法中
- super调用构造方法时,只能是第一句
- super不能访问父类的private成员
Object类
Object类是所有类的父类
Object类被子类经常重写的方法
Object类的equals()方法
- 比较两个对象是否是同一个对象,是则返回true
- 操作符==
简单的数据类型,直接比较值。如1==2
引用类型,比较两者是否为同一对象
instanceof用于判断一个引用类型所引用的对象是否是一个类的实例
抽象类
Java中也使用抽象类,限制实例化
public abstract class Pet{
}
abstract也可用于方法——抽象方法
- 抽象方法没有方法体
- 抽象方法必须在抽象类里
- 抽象方法必须在子类中被实现,除非子类是抽象类
public abstract void print();>>>没有方法体
final用法