java中的继承简介
- java中的继承是通过extends来继承的,一般格式为:
[类修饰符] class 子类名 extends 父类名{
成员变量定义;
成员方法定义;
}
- 继承是从已有的类中派生出新的类,新的类能吸收已有类的数据属性和行为,并能扩展新的能力。java中的类只支持单继承,而接口支持多继承。
- 只有在继承关系下,栈和堆类型可以不一致:
父类 对象名 = new 子类(); //父类型引用调用子类型对象
- 自动类型转换,牺牲子类特有的方法,这时候子类特有的方法无法使用,因为此时静态绑定在编译时不通过。
public class Test0409
{
public static void main(String[] args)
{
Father zhangSan = new Child();
zhangSan.eat();
}
}
class Father
{
private int age;
private String name;
public Father(){}
}
class Child extends Father
{
public Child(){}
public void eat(){}
}
如果想要使用子类特有的方法,需要进行强制类型转换
((Child)zhangSan).eat();
Child zs = (Child)ZhangSan; //这两种格式都是可以的,都属于强制类型转换。
这时候就可以编译通过了。因为将父类型引用子类型对象强制转换成了子类型引用子类型的对象。这时候就可以编译通过了。
- 动态绑定,此时编译通过了,如果子类重写了父类的方法,调用的方法就会是子类的方法。如果子类没有重写这个方法,这是调用的就是父类的方法。因为重写,所以构成了java的多态。