why繼承q 變量不能繼承嗎? 為什么不報(bào)錯(cuò)
package practice;
public class Why extends Q{
int a = 10;
void show() {
System.out.println(a);
}
public static void main(String[] args) {
Why w = new Why();
w.show();
}
}
?class Q{
int a = 0;
}
package practice;
public class Why extends Q{
int a = 10;
void show() {
System.out.println(a);
}
public static void main(String[] args) {
Why w = new Why();
w.show();
}
}
?class Q{
int a = 0;
}
2018-04-28
舉報(bào)
2018-04-29
????????子類繼承父類后,創(chuàng)建的子類對(duì)象會(huì)在內(nèi)存中開辟一塊區(qū)域用于存放該對(duì)象的屬性和方法地址,但這塊區(qū)域被分成兩塊,一塊用來存放從父類繼承的屬性和方法地址,一塊用來存放子類獨(dú)有的屬性和方法地址(包括重寫的方法)。
????????因此你創(chuàng)建的子類對(duì)象其實(shí)有兩個(gè)變量a,如果你在show()方法里在輸出super.a,就可以輸出從父類繼承的a的值。
2018-06-24
這就相當(dāng)于重寫吧
2018-04-29