我们都知道java的四大特性:抽象、继承、封装、多态;
那么关于继承有哪些特性呢?下面看具体实例:
(1)
public class Person {
public int a=2;
public void see(int a){
System.out.println(a);
}
}
public class Hello extends Person {
public int a = 3;
public void see(int s){
System.out.println("11");
} public static void main(String[] args){
Person a1 = new Person();
System.out.println(a1.a); //a1.a的值由声明类型决定,所以值是2
a1.see(1); //调用的方法由引用对象的类型决定,这里对象是子类的对象,所以值是11,总结:属性绑定到类型,方法绑定到对象!
}
}
(1)继承成员变量
当子类继承某个类时,子类就可以使用这个类的成员变量,但不是完全继承这个类中所有的成员变量,具体原则如下:
<1>子类能够继承父类的public、protected、default 修饰成员变量,不能继承private修饰的成员变量
<2>对于子类可以继承父类的成员变量,如果子类出现了同名的成员变量,那么子类就会屏蔽掉父类的成员变量,如果想调用父类的成员变量,就需要用到super关键字
(2)继承方法
当子类继承某个类时,子类就可以使用这个类的方法,但不是完全继承这个类中所有的方法,具体原则如下:
<1>子类能够继承父类的public、protected、default 修饰方法,不能继承private修饰的方法
<2>对于子类可以继承父类的方法,如果子类出现了同名的方法,那么子类就会屏覆盖父类的成员变量,如果想调用父类的成员变量,就需要用到super关键字,子类重写的方法的修饰符权限要大于父类的方法访问权限
总结:
程序运行时(一个类中),会第一时间加载运行静态代码块,一旦创建对象,就会执行非静态代码块以及无参构造方法。 而在继承中,程序运行时 会先加载父类中静态代码块 然后加载本身静态代码块,一旦创建对象(运用子类构造方法创建),就会调用 父类非静态代码块,父类构造方法,然后就是本身 非静态代码块,本身构造方法。