導航:首頁 > 方法技巧 > java父類如何調用子類的方法

java父類如何調用子類的方法

發布時間:2022-12-30 12:31:51

⑴ Java中怎麼讓子類通過父類的方法去調用子類的方法

子類的對象在調用方法時,先在子類中查找,若方法不存在,則到父類中進行查找。

在調用父類中的方法時,在方法中繼續調用方法,對這個方法的調用者為子類對象,還是按照上面的步驟尋找方法。

所以,子類在調用方法時,調用的都是本類方法,沒有這個方法時,再調用父類中的方法。

⑵ java父類調用子類方法

//保存為Shape.java
import java.util.ArrayList;

public abstract class Shape {
public abstract void draw();
public static void main(String[] args) {
ArrayList shapes = new ArrayList();
shapes.add(new Square());
// shapes.add(new Shape()); // ERROR ONE
((Square)shapes.get(0)).draw();
// shapes.get(0).draw(); // ERROR TWO
}
}

//保存為Square.java
public class Square extends Shape {
public void draw () {
System.out.println("The square is being drawn.");
}
}

⑶ java指向子類的父類對象到底能不能調用子類的方法

你這個問題你問的沒有太明確,我來大概解釋一下吧。
首先你要知道多態的概念,有編譯時多態(前期綁定),還有運行時多態(後期綁定),注意:C語言中只有編譯時多態,但是java兩者都有,java中除了static方法和final方法,其他所有的方法都是後期綁定,類成員變數也是前期綁定的,如果你對java的類初始化順序有所了解就會明白,所以我們寫程序的時候不必去指定是否應該去進行後期綁定,它是自動進行的
注意只有普通方法才可以是多態的,java中類的final方法,static方法,類成員變數,都是在編譯的時候已經確定的,如果用父類引用指向子類對象,那麼你可以自行代碼測試,結論如下:
1.通過父類引用調用子類中重寫父類的方法,那麼會調用子類的重寫方法,
2.通過父類引用調用子類中獨有的方法,那麼必須把父類引用強制轉化成子類類型的引用才能進行調用。
3.通過父類引用調用子類重寫父類的靜態方法(子類中的這個方法和父類中的這個方法返修飾符,返回類型,方法名,參數列表完全相同,假定認為靜態方法也可以重寫吧),通過父類引用調用靜態方法,不會有多態的特徵,調用的還是父類的靜態方法,因為java中靜態方法和類是綁定的,而不是和單個對象綁定的。
4.通過父類引用調用子類和父類中同名的public變數,那麼調用的是父類的成員變數,因為當子類對象轉型為父類引用的時候,訪問局部變數的操作都由編譯器解析,因此不是多態的。子類對象中包含了兩個同名的public變數(debug的時候你會看到子類對象中有兩個變數),他自己的和他從父類得到的,所以通過父類引用指向子類對象而調用父類和子類同名的public 變數,那麼會調用父類的public變數,而不是子類的public變數,因為是前期綁定,編譯時候已經確定了調用哪一個,而不是通過父類引動態地選擇用到底該調用哪一個變數。
反正記住一點,如果父類引用指向了子類對象,那麼通過父類引用調用子類重寫父類的普通方法,那麼可以直接調用,如果通過父類引用調用子類獨有的方法那麼就得強制轉換。

⑷ java 子類重寫了一個方法,如何在父類中調用

java子類繼承父類、方法的重寫(覆蓋)在程序中,如果想聲明一個類繼承另一個類,需要使用extends關鍵字。格式:class子類 extends父類

⑸ java父類對象可以調用子類獨有的方法嗎

可以的,要子類重寫父類方法

packagedisruptor.demo2;

/**
*Createdbyhcqon2017/6/1.
*/
publicabstractclassFather{
privateStringname;

publicStringgetName(){
returnname;
}

publicvoidsetName(Stringname){
this.name=name;
}

publicvoidsysf(){
sysout();
}

publicabstractvoidsysout();

}

這個是父類,注意sysout()是虛擬方法

packagedisruptor.demo2;

/**
*Createdbyhcqon2017/6/1.
*/
publicclassSonextendsFather{

@Override
publicvoidsysout(){
System.out.println(getName());
}
}

這個是子類重寫了父類的sysout()方法

packagedisruptor.demo2;

/**
*Createdbyhcqon2017/6/1.
*/
publicclassSonTest{
publicstaticvoidmain(String[]args){
Fatherfather=newSon();
father.setName("123");

father.sysf();
father.sysout();
}
}

這個是測試類,首先對象一定是子類的對象,子類沒有的方法調用父類的,父類調子類的方法要先定義一遍

⑹ Java中父類調用子類地方法

餓 一樓不要誤人子弟啊 那個方法不行的
用父類的引用創造子類對象時(new),只能訪問子類所重寫(overwrite)的方法,父類不存在的方法是不可以訪問的。

閱讀全文

與java父類如何調用子類的方法相關的資料

熱點內容
乳腺增生治療乳康方法 瀏覽:587
毛細血管鍛煉方法 瀏覽:69
布邊太緊有什麼好方法 瀏覽:453
黃金果樹苗種植方法 瀏覽:428
咽炎的分類及中醫治療方法 瀏覽:859
汽車固體打蠟方法及步驟 瀏覽:230
記憶枕的使用方法 瀏覽:344
商品住宅市場研究方法 瀏覽:750
如何化解飢餓的方法 瀏覽:107
牛不反應怎麼解決方法 瀏覽:57
牙美如何使用方法 瀏覽:817
喝酒醉有什麼解決方法 瀏覽:983
心血管病早期治療方法 瀏覽:565
中葯生地的功效與作用及食用方法 瀏覽:600
寶寶尿布折疊方法視頻 瀏覽:487
物理考試怎麼考好的方法 瀏覽:797
好方法解決盈虧問題 瀏覽:454
德育方法寫成了德育原則怎麼辦 瀏覽:19
大益一星大白菜鑒別方法 瀏覽:264
研究圓錐的體積的實驗方法 瀏覽:259