1. 程式人生 > >Java中父類方法的呼叫

Java中父類方法的呼叫

對於已覆蓋的方法來說,例如Child是Parent的子類,而且,Child和Parent都有個toString()方法,也就是說,Child覆蓋Parent的toString()方法。如果child要呼叫Parent的toString()方法,只需要把child強制轉換為Parent就可以,也就是(Parent)child.toString(),這樣就是呼叫其父類的toString()方法。如果不是覆蓋的,就不用強制轉換,直接呼叫就可以。

在看java繼承這一塊的時候發現了一個問題,即父類未被子類覆蓋的方法是如何呼叫的?是子類擁有了父類的該方法只是沒有顯示錶示,還是子類呼叫了父類的該方法。

有時候我們會遇到這種情況:父類中有方法A和方法B,方法A中呼叫了方法B。某類繼承該類,重寫了方法B,但沒有對方法A進行重寫。那麼在用子類的例項呼叫該方法A時,最終會執行哪一個方法B呢?                                                                                      結論:最終呼叫的是子類中的方法B

java:子類物件向上轉型為父類例項後,呼叫的是父類方法,還是子類方法?                                                          結論:當子類重寫了父類方法,向上造成後呼叫的是子類方法;
                      子類沒有重寫父類方法,向上造型後呼叫的是父類方法。

public class Test1 {

public static void main(String[] args)  {

A k=new B();

k.sayHi();

k.hello();

}

}

class A {

public void sayHi(){

System.out.println("我是父類");

}

public void hello(){

System.out.println("我是父類hello");

}

}

class B extends A{

public void sayHi(){

System.out.println("我是子類");

}

}

輸出結果:

我是子類

我是父類hello

相關推薦

Java 怎麼呼叫方法

父類能呼叫子類的方法嗎? 答:能。 怎麼做? ● 把子類傳遞到父類的有參構造中,然後呼叫。● 使用反射的方式呼叫,你使用了反射還有誰不能呼叫的?! ● 父類呼叫子類的靜態方法。 案例展示: pac

Java方法呼叫

對於已覆蓋的方法來說,例如Child是Parent的子類,而且,Child和Parent都有個toString()方法,也就是說,Child覆蓋Parent的toString()方法。如果child要呼叫Parent的toString()方法,只需要把child強制轉換為P

Java和子方法呼叫和引數傳遞探討

有這樣一段程式,看看它會輸出什麼結果 public class Test { public static void main(String [] args){ System.out.println(new B().getVa

關於java靜態方法能否被之類重寫的問題

1. 先說結論:   不能被重寫 2. 為什麼??   ②. 所引用該方法的物件指向的都是記憶體中同一塊記憶體的資料, 已經寫死了呀, 那你還怎麼重寫呢 3. 靜態方法可以直接用類名呼叫這麼方便,為什麼不都設定為靜態屬性和方法?   ①.靜態方法從屬於類, 可以通過類名直接呼叫, 在編譯

java的成員變數和成員方法在記憶體分配上的一些理解

先宣告,以下是個人自己的理解(我也怕誤人子弟),如有錯誤請指出一起學習交流。先上程式碼:package myTest; class A { int num = 5; A() { show(); } public void show() { System.

Java與子的轉換問題

自己在自學安卓,學的過程中遇到了不少困難,從中意識到自己的java知識不夠紮實而導致,為此分享一下自己的java知識,一來是鞏固知識,二來是給一些也在學java的同學共享共享! 首先先看個例子: class A { public A() { } } class B exte

java宣告子例項化

問題: 1、比如兩個類父類:Person 子類 Student extends Person在使用時候,這樣寫:Person person=null; //宣告物件person=new Student(); //建立物件這樣看來 宣告的時候,是父類,而在產生物件的時候,實際的物件是子類。怎麼理解

java和子的關係和使用

在java中規定:一個父類可以有多個子類,但是一個子類只能有一個父類。子類可以通過extends關鍵字來繼承父類。做個比較通俗的比喻,就像一個父親可以有多個親孩子,但是一個孩子只能有一個親生父親。 1.繼承以及重寫:子類繼承父類是對父類屬性和方法的全面繼承,同時子類

Java和子丟擲異常的處理

  (尊重勞動成果,轉載請註明出處:https://blog.csdn.net/qq_25827845/article/details/85109390冷血之心的部落格)   背景:         這篇部落格的靈感來自

方法呼叫關係,內部類總結

public class Privateoverride { private void f() { System.out.println("private f()"); } public static main(String[] args) { Priva

JAVA,子,內部類

一個.java原始檔中可以有多個類(不包含內部類),但是隻有一個類是Public的,如 public class Test {  public class A{//內部類  }  public class B{//內部類  } // /** //  * @param arg

java與子的關係以及使用

在java中規定:一個父類可以有多個子類,但是一個子類只能有一個父類。子類可以通過extends關鍵字來繼承父類。做個比較通俗的比喻,就像一個父親可以有多個親孩子,但是一個孩子只能有一個親生父親。1.繼承以及重寫:子類繼承父類是對父類屬性和方法的全面繼承,同時子類在繼承了父類

Java一點心得

關於java中子類父類之間的關係一點心得: 宣告一個父類引用(變數),可以賦值一個父類物件。 宣告一個子類引用,可以賦值一個子類物件。 宣告一個父類引用(變數),可以賦值一個子類物件。 宣告一個子類引用,不可以賦值一個父類物件。 例如: Dog ext

Java與子的普通程式碼塊,構造程式碼塊,靜態程式碼塊 初始化

//示例程式碼: public class HelloB extends HelloA{ public HelloB(){ System.out.println("子類構造方法"); }

Java初始化順序

1) 首先初始化父類中的靜態成員變數和靜態程式碼塊,按照在程式中出現的順序初始化  2) 然後初始化子類中的靜態成員變數和靜態程式碼塊,按照在程式中出現的順序初始化  3) 其次初始化父類的普通成員變數和程式碼塊,再執行父類的構造方法  4) 最後初始化子類的普通成員

javamath方法之數學運算(pow,exp,三角函式,指數)

static double  sin(double a ) : 返回角的三角正弦static  double cos(double a)  : 返回角的三角餘弦static  double tan(double  a)  : 返回角的三角正切static  double asin(double a) : 返回

關於java和子轉型的問題java.lang.ClassCastException

我們都知道,java是面向物件的語言,繼承是其一個很重要的特性,看下面這段程式碼:package my.java.test; class FatherClass { int fatherField; void fatherMethod() { Syst

java呼叫方法之super關鍵字的疑惑?

在java中有super和this這2個關鍵字,我有時候對super有一些疑惑,我甚至認為我對super和this這2個關鍵字還沒理解!大家請看下面的程式碼,幫我解惑一些唄!謝謝package com.

js呼叫方法,模擬java的super()

如題,使用apply,或者call來模擬 var baseClass = cc.LayerColor.extend({ ctor:function(){ this._super(); }, destory:function(){ con

Java方法方法相互呼叫

class A{ public void fun1(){ System.out.println("a:fun1"); //若為private方法,this指的是父