本文目錄一覽:
- 1、什麼是繼承,試說明在java中實現多繼承的方法
- 2、解釋一下Java中的繼承,都繼承到什麼了
- 3、JAVA中是繼承不能實現資源共享而介面可以實現資源共享嗎?
- 4、關於Java 的繼承問題,子類會繼承父類的哪些東西?
- 5、java中的繼承
什麼是繼承,試說明在java中實現多繼承的方法
JAVA里沒有多繼承,一個類之能有一個父類。
而繼承的表現就是多態。一個父類可以有多個子類,而在子類里可以重寫父類的方法(例如方法print()),這樣每個子類里重寫的代碼不一樣,自然表現形式就不一樣。這樣用父類的變數去引用不同的子類,在調用這個相同的方法print()的時候得到的結果和表現形式就不一樣了,這就是多態,相同的消息(也就是調用相同的方法)會有不同的結果。舉例說明:
//父類
public class Father{
//父類有一個打孩子方法
public void hitChild(){}
}
//子類1
public class Son1 extends Father{
//重寫父類打孩子方法
public void hitChild(){
System.out.println(“為什麼打我?我做錯什麼了!”); }
}
//子類2
public class Son2 extends Father{
//重寫父類打孩子方法 public void hitChild(){
System.out.println(“我知道錯了,別打了!”); }
}
//子類3
public class Son3 extends Father{
//重寫父類打孩子方法 public void hitChild(){
System.out.println(“我跑,你打不著!”); }
}
//測試類
public class Test{
public static void main(String args[]){
Father father;
father = new Son1();
father.hitChild();
father = new Son2();
father.hitChild();
father = new Son3();
father.hitChild();
}
}
都調用了相同的方法,出現了不同的結果!這就是多態的表現!
2.JAVA中沒有多繼承,而用介面實現了多繼承!一個類或是可以同時實現多個介面!(就相當於C++里一個類同時繼承了多個類!)例如:
public class Son implements Father1,Father2,Father3{
}
介面有利於代碼功能的擴展(增加新的功能)!而繼承則有利於代碼功能的修改(把舊的功能改成新的功能)!這裡舊功能的修改和新功能的增加前提是不修改舊的功能,舊的功能仍然可以使用!舊類的代碼也不做修改!
接著上面的繼承舉例:上面例子中的子類我們統稱為一代子類
1.用繼承修改舊的功能。
現在如果一代Son1的功能打孩子,也就是方法hitChild()裡邊的功能實現有問題,我們要把具體實現修改掉,那麼我們可以重新寫一個新的二代子類Son11繼承自一代子類Son1,並重寫其hitChild()方法。
//二代子類
public class Son11 extends Son1{
//重寫父類打孩子方法
public void hitChild(){ System.out.println(“我是二代子類對此方法的新實現”);
}
}
2.用介面實現增加新的功能。
現在類Son1已經有了『打孩子』功能(也就是方法),而我們有了新的需求,我們需要它還要有一個新的功能『寵孩子』(新方法pet();)。而舊的代碼不能動!那麼我們可以定義一個新的介面(PetInterFace),介面里定義這個方法pet()的聲明。再重新寫一個二代子類Son11,讓它先繼承類Son1,同時實現介面 PetInterFace!並實現介面里的 pet()方法!
//新介面
public interface PetInterFace{
//新功能方法 public void pet();
}
//二代子類
public class Son11 extends Son1 implements PetInterFace{
//實現介面方法
public void pet(){
System.out.println(“父親很愛我!”);
}
}
這樣這個二代子類即有了老的方法,又有新的功能!
解釋一下Java中的繼承,都繼承到什麼了
java是面向對象的編程語言,是類構成了java語言,而繼承又是java必不可少的,繼承就是當你寫一個類時,雖然這個類滿足了某些功能但是你又想拓展它的功能,此時你就可以使用繼承機制在寫一個該類的子類,來完成你需要的功能,一旦子類繼承了父類…
JAVA中是繼承不能實現資源共享而介面可以實現資源共享嗎?
介面內部變數默認為public屬性,所以實現這個介面的類,是能完全訪問介面內變數的。
某種程度達到了你的要求。
另外,如果類內對象定義為protected屬性,那麼繼承的手段也能完全資源共享
關於Java 的繼承問題,子類會繼承父類的哪些東西?
父類和子類的問題:
確認父類的方法是否使用了private修飾
並非所有的父類方法都可以被子類繼承的。
其次確認子類繼承父類時,是否有import
父類
【無法找到繼承的對象】感覺像是沒有import
編譯的時候,查找的是class文件。所以父類只有class是可以的。但是需要放在同一個工程中
你說的第二個問題?好像是實現不了。父類調用子類的方法是掉不到的
想實現這個就得依靠介面了
java中的繼承
當然有
fathera=newson是屬於父類引用指向了子類對象,java把這種把子類對象賦給父類引用變數稱之為向上轉型
區別:給你舉個例子
比如,father類有一個eat()方法,son類繼承了father類,也就擁有了eat()方法,並同時定義了自己的方法drink().如果是fathera=newson,則你只能調用屬於father的方法eat(),而不能調用son的方法drink().也就是說雖然變數a指向了對象son,但由於它編譯時的類型是father,所以它不能調用屬於son的方法,儘管變數a運行時的類型是son.
而sona=newson中的a則可以調用屬於它自己的方法drink().和它繼承的方法eat(),因為a這個引用變數編譯時的類型和運行時的類型都是son.
再說的大眾些,fathera=newson是以父親的角度看兒子,由於父子之間有繼承關係,你是創造了一個兒子對象並把它當父親用,所以你只能調用屬於父親的方法,而sona=newson就是你是創造了一個兒子對象並把它當兒子,所以你可以調用屬於兒子的方法和他所繼承父親的方法
以後你理解了多態以後,就好理解這個問題了
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/259476.html