面向物件繼承中記憶體載入原理
開始JVM裡面會有兩個類 一個是 zi.class ,和Fu.class
1.執行到zi的建構函式的時候。會在第一樣執行super()呼叫父類建構函式。那麼我們就載入父類的程式碼塊。
2.現有類我們才能建立new物件, 這樣才會在堆裡面開闢一塊空間。
3.當我們new一個物件的時候。我們就呼叫子類的建構函式讓進棧。 接著第一行的super()呼叫父類的建構函式。
4.父類也進棧了。但是在堆裡面沒有開闢記憶體空間,父類指向的是new的子類物件。
5.所以我們呼叫的是子類的方法。
package com.review; public class BookPC { public static void main(String[] args) { /* * 思路: */ Zi zi = new Zi(); System.out.println("你怎麼看"); zi.show(); /** * 開始JVM裡面會有兩個類 一個是 zi.class ,和Fu.class * 1.執行到zi的建構函式的時候。會在第一樣執行super()呼叫父類建構函式。那麼我們就載入父類的程式碼塊。 * 2.現有類我們才能建立new物件, 這樣才會在堆裡面開闢一塊空間。 * 3.當我們new一個物件的時候。我們就呼叫子類的建構函式讓進棧。 接著第一行的super()呼叫父類的建構函式。 * 4.父類也進棧了。但是在堆裡面沒有開闢記憶體空間,父類指向的是new的子類物件。 * 5.所以我們呼叫的是子類的方法。 */ } } class Fu { Fu() { show(); } public void show() { System.out.println("Fu show"); } } class Zi extends Fu { int num =8 ; Zi() { super(); //這行程式碼即使我們沒有寫,也會預設存在的 this.num =9; } Zi(int i) { } public void show() { System.out.println("zi shwo"+num); } }
執行結果:
zi shwo0
你怎麼看
zi shwo9
相關推薦
面向物件繼承中記憶體載入原理
開始JVM裡面會有兩個類 一個是 zi.class ,和Fu.class 1.執行到zi的建構函式的時候。會在第一樣執行super()呼叫父類建構函式。那麼我們就載入父類的程式碼塊。 2.現
Python3中面向物件------繼承
以下是我對Python3面向物件------繼承的理解,因為博主也是初學Python3,有很多東西都還停留在表層的理解,如果我的部落格有任何錯誤,請及時評論或者私信我,我會及時更改。也歡迎同樣學習Python的你願意關注我的部落格,我會把我每週的學習內容進行整
面向物件-繼承實現的原理
繼承的實現原理:1、子類會先於父類2、多個父類,會根據列表中的順序被檢查3、如果對於下一個類存在兩個合法的選擇,選擇第一個父類。繼承順序(mro查詢順序) 1、新式類:廣度優先2、經典類:深度優先(一條道走到底) 在Python2中 經典類:沒有繼承object,以及它的子類都稱之為經典類 在Pytho
java面向物件——繼承最終章--子類的例項化過程(記憶體)
一個物件的例項化過程:Person p=new Person(); 1.jvm會讀取指定的路徑下的Person.class檔案,並載入進記憶體。 並會先載入Person中的父類(如果有父類物件的情況下)。 2.在堆記憶體中開闢空間,分配地址 3.並在物件空間中,對物件
對面向物件程式設計中的繼承概念的再理解
繼承是面向物件程式設計的基本概念之一,是面向物件程式設計最很重要的特徵。 先來看一下繼承的定義:一個新類從已有的類中獲得其已有特性,這種現象稱為類的繼承。可見繼承是解決程式碼中的複用問題。 在寫程式碼的時候一般會有一個誤區,認為是子類繼承於父類,其實這是有問題的。先來看一下
面向物件——繼承和多型
面向物件——繼承和多型 一. 繼承 1.繼承: 是一種機制,可以進行程式碼的重用——基類(超類) 子類(派生類) 子類繼承了 父類的除建構函式外的所有屬性 2.super關鍵字: super():----->呼叫基類的建構函式 //必
Python面向物件(繼承)
面向物件三大特性:繼承 1 class F: 2 def f1(self): 3 print("F.f1") 4 5 def f2(self): 6 print("F.f2") 7 8 class S(F):#子類繼承父類 9
Java面向物件----繼承概念,super關鍵字
繼承概念: 繼承需要符合的關係 is-a , 父類通用更抽象,子類更特殊更具體 類之間的關係 繼承體現 組合體現 實現介面體現 繼承的意義 程式碼重用 體現不同抽象層次 extends關鍵字 Super關鍵字
Golang 之 面向物件繼承(四)
並沒有為PhonePlus 實現介面,僅僅為Phone實現了介面,不過PhonePlus裡面嵌入了Phone的一個內部型別,也是可以通過介面呼叫函式Call來呼叫到Communicate method。 在main函式,發現PhonePlus的methods set 裡
Golang 之 面向物件繼承(三)
對於結構體來說,一個是 Phone型別,實現了PhoneFunction介面,這種情況下,無論是Phone還是*Phone都是可以成為介面呼叫的 package main import "fmt" type Phone struct { OS string
Golang 之 面向物件繼承(二)
對於結構體來說,一個是 Phone型別,一個是Phone的指標型別,他們都有Call方法,這種情況下,方法也是繼承 package main import "fmt" type Phone struct { OS string Net string
Golang 之 面向物件繼承(一)
對於結構體來說,Go中使用一種叫做”組合”的方法來實現繼承 package main type Phone struct { } func (p *Phone) Call() { println("...呼叫中") } // 組合 type Mi8 str
PHP中的面向物件OOP中的魔術方法
一、什麼是魔術方法: PHP為我們提供了一系列用__開頭的函式,這些函式無需自己手動呼叫,會在合適的時機自動呼叫,這類函式稱為魔術函式。 例如: function __construct(){} 在new一個新物件時自動呼叫此函式 二、PHP中都有那些魔術方法,以及它們的作用:
JavaSE之面向物件(中)
1.static靜態修飾符 使用static修飾的成員變數、常量、方法和程式碼塊統稱為靜態成員。 靜態成員歸整個類所有,但不依賴於類的例項,只是別所有的例項所共享,只要這個類被JVM載入,就可以根據類名在全域性資料區域中找到他們,因此,靜態成員可以在任何例項物件建立之前訪問。 1.1st
day30 Pyhton 面向物件 繼承.裝飾器
一面向物件相關 談談你對面向物件的理解 1.泛泛談:什麼情況下使用面向物件 2.針對面向物件的 封裝 繼承 多型一個一個的談 3.根據你工作中的實際情況對應來舉例子 封裝 1.廣義上:普遍的大家認為的封裝,就是把一類相同屬性和方法的事務抽象為一個類 把屬性和方法封裝在一個類中
PHP學習——24 PHP面向物件(類中靜態成員的建立與訪問技巧:static)
<?php class Employee { // 訪問控制符:指示類成員在哪裡可以被訪問:public/protected/private // 成員狀態符:指示如何訪問該成員:靜態self/parent/static,非靜態:$this-> public static $
JAVA學習——基礎部分——面向物件——繼承
一、概念(自我理解) 將一堆子類進行總結,將都有的相同點抽象成父類,由父類形成大體,然後子類豐富父類。 繼承類不可以多繼承,JAVA是單繼承類。 父類還可以往上加分別是:子類——父類——父類的父類——·········——最高時抽象類 可以用這句話判斷:“A is a B”若是這個成
面向物件-類中的三個裝飾器
為了程式碼更加完善,引入幾個裝飾器.. 裝飾類中的方法 @classmethod --->裝飾類方法,不用self屬性,只用類的cls屬性 @staticmethod --->裝飾靜態方法,既不用self屬性,又不用類cls的
python——面向物件(中)
1.單繼承 在程式中,繼承描述的是事物之間的所屬關係,例如貓和狗都屬於動物, 程式中便可以描述為貓和狗繼承自動物。 同理,波斯貓和巴釐貓都繼承自貓,而沙皮狗和斑點狗都繼承自狗 &
面向物件方法中的資料庫設計
在面向物件中,是沒有資料流這一說法的。業務的完成是由物件及訊息來完成的,只有“物件流”,沒有資料流。 只是在現實中,絕大部分的物件持久化是用關係資料庫實現的,我麼還沒有在效能上和查詢上