Java繼承中屬性、方法和對象的關系


    大家都知道子類繼承父類是類型的繼承,包括屬性和方法!如果子類和父類中的方法簽名相同就叫覆蓋!如果子類和父類的屬性相同,父類就會隱藏自己的屬性!

但是如果我用父類和子類所創建的引用指向子類所創建的對象,父類引用所調用子類對象中的屬性值或方法的結果是什么呢?

看代碼:

public class FieldDemo {  
    public static void main(String[] args){  
        Student t = new Student("Jack");  
        Person p = t;//父類創建的引用指向子類所創建的對象   
        System.out.println(t.name+","+p.name);  
        System.out.println(t.getName()+","+p.getName());  
    }  
  
}  
class Person{  
    String name;  
    int age;  
    public String getName(){  
        return this.name;  
    }  
}  
class Student extends Person{  
    String name; // 屬性和父類屬性名相同,但在做開發時一般不會和父類屬性名相同!!   
    public Student(String name){  
        this.name = name;  
        super.name = "Rose"; // 為父類中的屬性賦值   
    }  
    public String getName(){  
        return this.name;  
    }  
}  

返回結果是:Jack,Rose
Jack,Jack

原因是:在Java中,屬性綁定到類型,方法綁定到對象!

內存圖如下:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM