Java中父類的同名方法會被子類重寫诡壁,因此就有了面向?qū)ο缶幊痰娜笠刂弧鄳B(tài)济瓢!但是荠割,如果父類和子類擁有同名屬性,那么會產(chǎn)生什么效果呢旺矾?下面是一個例子:
public class Person {
public String name = "father";
public void printName() {
System.out.println(this.name);
System.out.println(this.getClass());
}
}
public class Student extends Person{
public String name = "son";
public static void main(String[] args){
Person s = new Student();
s.printName();
}
}
輸出結(jié)果:
father
class Student
首先Student類由于繼承了Person類蔑鹦,實際上它擁有兩個屬性:super.name 和 name。
調(diào)用printName() 方法時箕宙,由于printName是父類中的方法嚎朽,因此這行代碼:
System.out.println(this.name);
實際上已經(jīng)和super.name綁定了,因此會輸出father柬帕。
而這行代碼:
System.out.println(this.getClass());
由于方法重寫的特性哟忍,因此會輸出Student。
總結(jié):Java中不存在變量重寫的概念陷寝。