小结
- 继承是面向对象编程的一种强大的代码复用方法
- Java只允许单继承,所有类最终的根类是Object
- protected允许子类访问父类的字段和方法
- 子类的构造方法可以通过super()调用父类的构造方法
- 可以安全地向上转型为更抽象的类型
- 可以强制地向下转型,最好借助instanceof判断
- 子类和父类的关系是is,has关系不能继承
继承是面向对象编程中非常强大的机制,它首先可以复用代码。当我们让一个类从另一个类中继承时,这个类就获得了另一个类的所有功能,我们只需要为这个类编写新增的功能。
java使用extends关键字来实现继承:
class Person{
private String name;
private int age;
public String getName() {...}
public void setName(String name){...}
public int getAge(){...}
public void setAge(int age){...}
}
class Student extends Person{
private int score;//不需要重复name和age字段/方法
public int getScore(){...}//只需要定义新增score字段/方法
public void setScore(int score){...}
}
通过继承,student只需要编写额外的功能,不再需要重复代码,在oop的术语中,我们把Person称为超类(super class),父类(parent class),基类(base class),把Student称为子类(subclass),扩展类(extended class)
继承树
在定义Person的时候,没有写extends。在java中,没有明确写extends的类,编译器会自动加上