1,如果多个类具有相同的属性和行为,我们可以抽取出共性的内容定义父类,这时再创建相似的类时只要继承父类即可。
子类拥有父类的所有属性与方法,无需重新定义。并且可以直接使用非私有的父类成员。
从逻辑关系来看,子类必须属于父类的一种时,才应该继承,且在原有基础上进行功能扩展。
继承关系的产生通常是为了定义出功能更为具体、更为强大的子类。所以,定义子类后,一般创建子类对象使用。子类可以直接使用父类非私有的成员变量与成员方法。
(注:如果成员变量没有使用private修饰,则子类也可直接访问。)
2,Java当中的继承格式:
public class 子类 extends 父类{
//父类的非私有方法与属性均继承过来,可以直接调用
//可以在父类的基础上扩展方法
}
如:
父类的定义:
public class Person{
//父类的成员变量
private String name;
//父类的方法
public void eat(){
System.out.println(“吃饭”);
}
}
子类继承父类的定义:
public class Chinese extends Person{
//继承的同时,可以定义子类特有的方法
public void sleep() {
System.out.println(“睡觉”);
}
}
3,继承注意事项
- Java只支持单继承,不支持多继承。即只能有一个父类。
- 父类可以继续有父类。
- 所有类均有父类,只有Object类没有父类。
- 在所有使用父类类型的地方均可以传入其子类对象。
- 子类访问父类非私有化成员变量
4.继承后内存图
以Person类为例:
定义父类
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Person {
private String name;
private int age;
}
定义子类
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Chinese extends Person{
private Stirng address;
}
定义测试类,使用子类创建对象
public class Test{
Chinese c = new Chinese();
}