继承

当子类继承了某个类之后,便可以使用父类中的成员变量,但是并不是完全继承父类的所有成员变量。具体的原则如下:

1)能够继承父类的public和protected成员变量;不能够继承父类的private成员变量;

2)对于父类的包访问权限成员变量,如果子类和父类在同一个包下,则子类能够继承;否则,子类不能够继承;

3)对于子类可以继承的父类成员变量,如果在子类中出现了同名称的成员变量,则会发生隐藏现象,即子类的成员变量会屏蔽掉父类的同名成员变量。如果要在子类中访问父类中同名成员变量,需要使用super关键字来进行引用

 

static 方法和final方法不能被子类重写

 

public class Father {

    int x = 50;

    public void hello() {
        System.out.println("父类  hello() ");
    }

    //子类也定义了a,和hi
    int a = 200;

    public  void hi() {
        //这里可以说明的是,方法是运行时绑定,属性是编译时绑定
        System.out.println("###"+this.getClass()); //实际类型是子类
        this.a =  300;
        System.out.println("父类   hi() "+ " , a = "+ this.a);  //编译时就绑定的类型是Father
    }
    
    
    public static void test() {
        
    }
    
    
}

 

public class Child extends Father {

    int a = 100;

    public  void hi() {
        System.out.println("子类 : a =  "+a);
    }
    
    public void foo() {
        super.hi();
        System.out.println("父类  : a = "+super.a);
    }
    
    
    public static void test() {
        
    }
    
    public static void main(String[] args) {
        //自身的属性,方法
        Child  child =  new Child();
        child.hi();                  
        System.out.println(child.a); 
        
        //继承的属性,方法, 
        child.hello();
        System.out.println(child.x); 
        
        //调用父类的属性和方法(super)
        child.foo();
        
    }
}

 

posted @ 2019-05-25 11:02  踏月而来  阅读(130)  评论(0编辑  收藏  举报