1. 程式人生 > >Java 子類方法的父類方法相互呼叫

Java 子類方法的父類方法相互呼叫

class A{
    public void fun1(){
        System.out.println("a:fun1");
        //若為private方法,this指的是父類例項
        //若為public方法,this指的是子類物件例項,即呼叫子類物件例項被覆蓋的方法
        this.fun2();
    }

    /**
     * a:fun1
     * a:fun2
     */
    private void fun2(){
        System.out.println("a:fun2");
    }

    /**
     * a:fun1
     * b:fun2 
     */
// public void fun2(){ // System.out.println("a:fun2"); // } } class B extends A{ //被重寫了 public void fun2(){ System.out.println("b:fun2"); } } public class Main { public static void main(String[] args) { A a=new B(); a.fun1(); } }

相關推薦

java this 調再調用已覆蓋的方法及屬性(又一次理解)

views args pop word per ews nds 如果 ext 之前一直以為 this關鍵字 是指調用者對象,但是這次才真正理解,this代表當前對象,但是指向調用者對象,其實就是多態的用法,如下所示:B 繼承了 A,在B 中調用A類的方法,在A 中用this

java this 調呼叫已覆蓋的方法及屬性(又一次理解)

之前一直以為 this關鍵字 是指呼叫者物件,但是這次才真正理解,this代表當前物件,但是指向呼叫者物件,其實就是多型的用法,如下所示:B 繼承了 A,在B 中呼叫A類的方法,在A 中用this 訪問成員變數和方法,此時,如果用this訪問成員變數,如下,this.s ,

Java反射:通過物件呼叫方法

通常情況下在父類中不能直接呼叫子類中的方法(重寫的除外),但是在某些特殊的情況下,需要根據一個父類的物件來呼叫子類的方法,原理就使用java的反射原理。例如:Person類,有一個name屬性publ

Java 繼承方法的重寫(或者覆蓋,override)

1、子類重寫父類方法的方法名、引數型別必須與父類被重寫(被覆蓋)的方法相同; 2、子類方法的返回值型別必須小於等於父類被重寫的方法的返回值型別; 3、子類丟擲的異常小於等於父類方法丟擲的異常; 4

繼承後想要擴展方法

保留 回調 gen obj pcl logs col 父類 sel 1 >>> class PClass(object): 2 def setInfo(self,sex=‘Male‘): 3 self.gender = se

Java學習筆記七---構造方法有無參數對子的影響

als core npr 筆記 java學習筆記 def 權限 必須 void 子類不繼承父類的構造方法,但父類的構造方法對子類構造方法的創建有影響。具體來說就是: ①.當父類沒有無參構造方法時,子類也不能有無參構造方法;且必須在子類構造方法中顯式以super(參數)的形式

java 帶有exception的方法覆蓋問題

java 帶有exception的父類方法覆蓋問題父類中的方法拋異常,子類如果想覆蓋方法只可以拋同樣的異常或那個異常的子類或不拋異常,原因很簡單,考慮到多形性,我們經常會利用父類的引用調用方法,並根據父類方法的定義捕獲異常,當我們把子類的對象傳給父類引用,如果父類的方法被子類覆蓋且拋出了不同的異常,那該異常就

重寫方法

http image 父類 father 動態綁定 類的方法 動態 alt 類重寫 學到了,如圖 發現還是被重寫了 ------------------------------------------------------------------------

的調用,主要是參數和方法調用

繼承 bsp pri load china 類的方法 調用父類 class sub #子類調用父類的方法 class Vehichle: Country=‘china‘ #名字=‘ales‘不好這樣 def __init__(self,name,s

java機制:的載入詳解(靜態,靜態變數,靜態方法,靜態程式碼塊,構造程式碼塊,成員變數,成員方法,...)

       “程式碼編譯的結果從本地機器碼轉變為位元組碼,是儲存格式發展的一小步,卻是變成語言發展的一大步”,這句話出自《深入理解JAVA虛擬機器》 一.原始碼編譯      &n

重寫方法

class Goods{ public $goods_name; public function __construct($g_name){ $this->goods_name = $g_name; } } class Book extends Goods{

Java中子的構造方法

子類與父類的構造方法有兩點原則: 1、子類的構造方法必須呼叫父類的構造方法(原因為什麼,可參考此連結https://blog.csdn.net/y_dzaichirou/article/details/54920715) 2、被子類呼叫的父類構造方法必須存在(這

Java中子重寫方法

子類重寫父類方法 子類可以繼承父類的很多特性,但是在有些時候,父類提供的方法會出現不適用的情況,比如之前的例子裡, print() 方法就沒有打印出狗狗的品種,這種情況下就可以通過重寫父類的方法來解決問題,給它打印出來。 父類Pet類的程式碼不需要改變,在子類Dog類的基礎上作改動即

構造方法的關係

編寫JAVA作業時在繼承的環節發現了一些錯誤,希望總結一些規律:(以下全部屬於自己歸納,可能有問題) 一句話概括就是:子類一定會呼叫(不是繼承)父類的構造方法! 即遵循一個原則:子類的構造一定是在父類已構造的基礎上! 這句話要分為幾種情況來理解(下面只討論父類有

java中多型的成員變數和方法呼叫問題

class Super { String name = "父類名字"; public void setName(String name) { System.out.println(this.getClass());

關於之間的方法,構造方法呼叫關係

子類繼承了父類之後,父類的所有方法都可以被子類呼叫,父類的所有(除私有外)方法都可以被重寫; 但是父類中私有資料域不能在子類中被修改,只能通過呼叫父類的公共修改方法來修改; 例如下面圓幾何繼承了簡單幾何: 以上幾點說明: 簡單幾何類中的構造方法其實不需要寫,因

之間的方法過載、隱藏、重寫與虛方法呼叫

由於子類物件同時“彙集了”父類和子類的所有公共方法,如果子類中某個方法與父類方法的簽名一樣(即方法名和方法引數都一樣),那當通過子類物件訪問此方法時,訪問的是子類還是父類所定義的方法? 總的來說,子類方法與父類方法之間的關係可以概括為以下三種。    擴充(Extend):

java中子繼承和實現介面有同名方法怎麼處理

Java是一門單繼承語言,但是,在子類的繼承關係中,會存在父類和介面有同名方法的情況,這種情況該怎麼處理呢? 我們來一步步驗證: 1.子類繼承父類,實現介面,父類和介面有同名方法 public int

java中子重寫方法要注意的問題

子類不能重寫父類的靜態方法,私有方法。即使你看到子類中存在貌似是重寫的父類的靜態方法或者私有方法,編譯是沒有問題的,但那其實是你重新又定義的方法,不是重寫。具體有關重寫父類方法的規則如下:重寫規則之一:重寫方法不能比被重寫方法限制有更嚴格的訪問級別。 (但是可以更廣泛,比如

各種方法的執行順序

package parentAndChild; /**  * 狗類,繼承動物  */ public class Dog extends Animal{public static void main(String[] args) {Dog Dog = new Dog();Dog.A();}static {Sys