大家都知道子類繼承父類是類型的繼承,包括屬性和方法!如果子類和父類中的方法簽名相同就叫覆蓋!如果子類和父類的屬性相同,父類就會(huì)隱藏自己的屬性!
但是如果我用父類和子類所創(chuàng)建的引用指向子類所創(chuàng)建的對象,父類引用所調(diào)用子類對象中的屬性值或方法的結(jié)果是什么呢?
看代碼:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
public class FieldDemo { public static void main(String[] args){ Student t = new Student( "Jack" ); Person p = t; //父類創(chuàng)建的引用指向子類所創(chuàng)建的對象 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; // 屬性和父類屬性名相同,但在做開發(fā)時(shí)一般不會(huì)和父類屬性名相同!! public Student(String name){ this .name = name; super .name = "Rose" ; // 為父類中的屬性賦值 } public String getName(){ return this .name; } } |
返回結(jié)果是:
Jack,Rose
Jack,Jack
原因是:在Java中,屬性綁定到類型,方法綁定到對象!
文章很簡單,但是也有一定的實(shí)用價(jià)值,希望對大家的學(xué)習(xí)有所幫助。