第七週動手動腦
測試截圖
第三次輸出時,父類被子類賦了值,myvalue++。是對父類原本的變數加一,但是呼叫的方法依然是子類的方法和變數
當子類與父類擁有一樣的方法,並且讓一個父類變數引用一個子類物件時,到底呼叫哪個方法,由物件自己的“真實”型別所決定,這就是說:物件是子型別的,它就呼叫子型別的方法,是父型別的,它就呼叫父型別的方法。
這個特性實際上就是面向物件“多型”特性的具體表現。
如果子類與父類有相同的欄位,則子類中的欄位會代替或隱藏父類的欄位,子類方法中訪問的是子類中的欄位(而不是父類中的欄位)。如果子類方法確實想訪問父類中被隱藏的同名欄位,可以用super關鍵字來訪問它。
如果子類被當作父類使用,則通過子類訪問的欄位是父類的!
牢記:在實際開發中,要避免在子類中定義與父類同名 的欄位。不要自找麻煩!——但考試除外,考試 中出這種題還是可以的。
相關推薦
第七週動手動腦
測試截圖 第三次輸出時,父類被子類賦了值,myvalue++。是對父類原本的變數加一,但是呼叫的方法依然是子類的方法和變數 當子類與父類擁有一樣的方法,並且讓一個父類變數引用一個子類物件時,到底呼叫哪個方法,由物件自己的“真實”型別所決定,這就是說:物件是子型別的,它就呼叫子型別的
第七週動手動腦(2018.10.29-11.4)
動手動腦1: 執行 TestInherits.java 示例,觀察輸出,注意總結父類與子類之間構造方法的呼叫關係修改Parent構造方法的程式碼,顯式呼叫GrandParent的另一個建構函式,注意這句呼叫程式碼是否是第一句,影響重大! 執行截圖: 結論:通過 super 呼叫基類構造方法,必須是子
第五週動手動腦
1.早期經常這樣定義變數:int value=100; 前面的這樣定義:myclass obj=new myclass(); 這兩種方式定義的變數是一樣的嗎? 答:當宣告一個物件型別的變數時,實際上並沒有建立一個物件,此變數=null。//myclass obj=new myclass(
第五週動手動腦 動手動腦-3
動手動腦-3 package 動手動腦; public class 試驗 { public static void main(String[] args) { Foo obj1=new Foo(); Foo obj2=new Foo(
第五週動手動腦1
結果: 1 package second; 2 3 public class Test { 4 /* 5 * 類的初始化塊 6 */ 7 { 8 value=100; 9 } 10 p
第七周動手動腦(2018.10.29-11.4)
its 多態 nds 引用 技術分享 並且 圖片 構造 函數 動手動腦1: 運行 TestInherits.java 示例,觀察輸出,註意總結父類與子類之間構造方法的調用關系修改Parent構造方法的代碼,顯式調用GrandParent的另一個構造函數,註意這句調用代碼是否
第八週動手動腦(2018.11.5-11.11)
動手動腦一: 請閱讀並執行AboutException.java示例 1 import javax.swing.*; 2 3 class AboutException { 4 public static void main(String[] a) 5 {
第八週動手動腦
動手動腦一: 請閱讀並執行AboutException.java示例 AboutException.java 答: 結論: 異常 (Exception):發生於程式執行期間,表明出現了一個非法的執行狀況。許多JDK中的方法在檢測到非法情況時,都會丟擲一個異常物件。
java第三章動手動腦
它的 創建對象 靜態初始化塊 設定 代碼 logs 手動 調用 靜態方法 動手動腦 1. (1)int value=100; (2)MyClass obj = new MyClass(); 這兩種定義方式一樣嗎? 答:定義方式相同,其中(1)是(2)的簡化寫法。 2. 結
第六周動手動腦問題
優化 image 手動 ret 調用示例 mat 代碼 動手 字符數組 請運行以下示例代碼StringPool.java,查看其輸出結果。如何解釋這樣的輸出結果?從中你能總結出什麽? 在Java中,內容相同的字串常量(“Hello”)只保存一份以節約內存,所以s0,s1,
第四章動手動腦
字符串轉換 地址 -- val com ont 方法 [] ima 1.請運行以下示例代碼StringPool.Java,查看其輸出結果。如何釋這種輸出結果?從中你能總結出什麽? 運行截圖: 在java中,內容相同的字符串常量只保存一份以節約內存,所以s0,
java第六章動手動腦
部分 混亂 class 運行錯誤 個數 jvm 無法 構造 exce 構造函數(constructor)是一種特殊的方法 。主要用來在創建對象時初始化對象, 即為對象成員變量賦初始值,總與new運算符一起使用在創建對象的語句中 。特別的一個類可以有多個構造函數 ,可根據其參
第九周動手動腦01
退出程序 一個 row 好處 匯編 類型 筆試 bsp 1-1 運行AboutException.java示例,然後通過後面的幾頁PPT了解Java中實現異常處理的基礎知識。 運行結果: Java中的異常捕獲語句 Try{ //可能發生運行錯誤的代碼;
第三次 動手動腦
數據 而且 public 構造 不同 als 數據類型 重載 his 1.以下代碼為何無法通過編譯?哪兒出錯了? public class Test{ public static void main(String []args){
第五周動手動腦(2018.10.15-10.21)
自定義 兩種 靜態方法 不同的 div 演示 觀察 val ima 問題一: 早期經常這樣定義變量:int value=100; 前面的這樣定義:myclass obj=new myclass(); 這兩種方式定義的變量是一樣的嗎? 答:當聲明一個對象類型的變量時,實際上並
JAVA第五周 動手動腦
測試 部分 -i 之前 靜態變量 object his pack info public class Example { int x = 3;//類的實例變量,初始化值為3 static int y = 4;//類的靜態變量,初始化值為4 public stati
第五周動手動腦
字段 參數 分配 就會 lai 兩個 而且 接收 space 1.早期經常這樣定義變量:int value=100; 前面的這樣定義:myclass obj=new myclass(); 這兩種方式定義的變量是一樣的嗎? 答:當聲明一個對象類型的變量時,實際上並沒有創建
20172302 《Java軟體結構與資料結構》第七週學習總結
2018年學習總結部落格總目錄:第一週 第二週 第三週 第四周 第五週 第六週 第七週 教材學習內容總結 第11章 二叉查詢樹 1.二叉查詢樹是一種含有附加屬性的二叉樹,該屬性即其左孩子小於父節點,而父節點又小於等於其右孩子。二叉查詢樹的一個示意圖: 在二叉查詢樹中: &nbs
第7周動手動腦
1.“型別轉換”知識點考核 package kethird; class Mammal{} class Dog extends Mammal {} class Cat extends Mammal{} public class TestCast { public static void ma
第三次動手動腦
(一) 通過 super 呼叫基類構造方法,必須是子類構造方法中的第一個語句。在呼叫子類構造方法之前,必須先呼叫基類構造方法。 (二) 為什麼子類的構造方法在執行之前,必須呼叫父類的構造方法?能不能反過來?為什麼不能反過來? 建構函式的主要作用是在定義物件時初始化物件,定義子類物件時會同時定義父類物件