java中子類變數為什麼不引用父類例項,將詳細點更好

時間 2021-08-31 06:53:06

1樓:匿名使用者

1.舉一個例子,學生類繼承人類:studen extends person

首先你要明白一個類例項化的時候是怎麼分配記憶體的:student s=new student(); s是在棧記憶體中分配空間的,存的是一個地址,這個地址指向在堆記憶體中分配空間的new student();

而student繼承person的實質是什麼呢?就是在堆記憶體中分配空間的new student()裡面繼續劃分出一塊小的空間,取名叫做super,而super裡面存的也是一個地址,這個地址是指向父類person的,這也是為什麼我們可以在子類中用super關鍵字來代替父類了。

知道是怎麼分配記憶體就好辦了:

person p=new student();這是父類引用指向子類物件,這樣肯定可以 ,因為new student()這個物件裡面包含有父類person的地址。

student s=new person();這就是樓主所講的那樣了 ,這樣肯定不行咯,因為new person()這個物件分配的空間裡面不存有student類的地址,所以s找不到物件的地址會報錯。

2樓:

要用正常人的思維考慮,老師不是叫你用物件導向方法思考嗎。不理解暫時記死它:只有父類才能引用子類

3樓:罒黯星馳丶

樓上說的好,你應該把子類與父類就當成現實中的父與子,兒子只有在父親允許的情況下才能拿父親的東西,而且兒子不能去指揮父親,那不亂套了嗎

4樓:匿名使用者

如果這個父類例項 instanceof 子類,那麼就可以引用的。反之,就不可以。即使是前者的情況,因為屬於向下轉型,也要強制轉換。如:

shape s=new circle();

circle c=(circle)s;

這就是可以的。如果s沒有說是圓或說成是其他的了,就不能引用了。

5樓:手機使用者

子類變數引用父類變數,豈不是反了!小的不能不聽老子的。老子能管小的。小的管不了老子。

6樓:匿名使用者

問題問的有點模糊吧,是子類物件吧,因為變數不可能會引用父類的例項啊

java 中為什麼引用外部類的變數和方法都要是final內型

小童鞋 成 您好,提問者 這裡我給你舉個例子,請看下面 final類不能被繼承,沒有子類,final類中的方法預設是final的。final方法不能被子類的方法覆蓋,但可以被繼承。final成員變數表示常量,只能被賦值一次,賦值後值不再改變。final不能用於修飾構造方法。問題重點 final的變數...

靜態變數是什麼意思,java中靜態變數有什麼用途?

舉個例子,就是有兩個班級,a班級門上掛著班級裡學生的簡歷,b班級沒有,當你要上兩個班級裡找學生的時候,a班級你在門外就可以知道找誰了,b班級就必須上門裡邊找。學生簡歷就屬於 靜態變數,他可以通過類 班級 直接呼叫。在函式中,只有定義時才初始化,每次函式呼叫時保留有上次的值。使用上基本上和全域性變數差...

為什麼原子核中有中子,原子核內部有中子嗎

這個問題是誰都無法的,它涉及到物質的起源問題。即使有人會洋洋灑灑地解答,結果也一定是牽強附會的。所有的解釋,跳不出自相矛盾的邏輯 因為有,所以有。有質子,中子就規矩了,就不會隨意衰變 無質子,中子就任性了,就很快發生衰變。但是,中子對質子的約束何在?也就是上帝賦予中子的歷史使命是什麼?原子核內部有中...