最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

關于Java繼承中父類和子類構造函數(shù)的問題

 更新時間:2020年10月20日 10:31:03   作者:zx33699659  
這篇文章主要介紹了關于Java繼承中父類和子類構造函數(shù)的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

Java子類在實例化時默認調(diào)用的是父類的無參構造函數(shù),不論實例化時調(diào)用的是子類的有參還是無參構造函數(shù),

可以參考這篇Java子類實例化總是默認調(diào)用父類的無參構造操作

1、當父類沒有顯式定義構造方法時,

編輯器會默認為此類添加一個隱式無參構造函數(shù)。此時子類可以有自己的無參和有參構造方法。不論實例化時調(diào)用的是子類的有參還是無參構造函數(shù),默認調(diào)用的是父類的無參構造函數(shù)。

2、當父類有顯式定義無參構造方法時,

此時子類也可以有自己的無參和有參構造方法。類似于1,同樣默認隱式調(diào)用父類的無參構造方法。

3、當父類只有顯式定義有參構造方法時,

(1)子類定義無參方法會出錯:Implicit super constructor Father() is undefined. Must explicitly invoke another constructor,即隱式父類構造函數(shù)Father()未定義, 必須顯式調(diào)用另一個構造函數(shù),當此時調(diào)用父類的有參構造函數(shù)時,使用super(i),這里i是參數(shù),會提示i沒有定義,因為此時是無參構造函數(shù),此時要使子類也有無參構造函數(shù),只能在子類的無參構造函數(shù)中調(diào)用父類的有參構造函數(shù),并給父類的有參構造函數(shù)賦一個實參;

(2)在子類的有參構造函數(shù)中使用super(i)調(diào)用父類的有參構造函數(shù)不會出錯,因此若父類只有有參的構造方法,子類也只能有有參的構造方法,且子類的有參構造方法必須顯示調(diào)用父類的有參構造方法。

分析:默認都是調(diào)用父類的無參構造函數(shù),當父類有有參構造函數(shù)時,編輯器不會為父類添加無參的構造函數(shù),在子類繼承父類時,本來是默認在構造函數(shù)第一行都是默認有使用super()調(diào)用父類無參構造函數(shù)的,現(xiàn)在父類沒有無參構造函數(shù),因此提示顯示調(diào)用另一個構造函數(shù)(即有參構造函數(shù))。

提醒一點,當沒有子類繼承父類時,父類只定義有參構造函數(shù)是沒有問題的。

4、當父類和子類都有無參和有參構造方法時,默認是子類構造方法都是調(diào)用父類的無參構造方法的,但當子類的有參構造方法使用super(i)調(diào)用父類的有參構造方法時,帶參數(shù)實例化時就不再調(diào)用父類的無參構造方法,而是調(diào)用父類的有參構造方法,因為是顯示調(diào)用(人為強制的)。

總結:

父類有無參構造函數(shù)時(顯示或隱式),子類的有參和無參構造函數(shù)都是默認調(diào)用父類的無參構造函數(shù);當父類只有有參構造函數(shù)時,子類可以有有參和無參構造函數(shù),子類有參構造函數(shù)必須顯式調(diào)用父類的有參構造函數(shù),子類無參構造函數(shù)也必須顯式調(diào)用父類的有參構造函數(shù),但需給父類有參構造函數(shù)賦實參。

1中的示例:

package classTest;
class Father1{

}
class Son1 extends Father1{
 public Son1() {
 System.out.println("子類的無參構造方法");
 }
 public Son1(int i) {

 System.out.println("子類中有參構造方法"+i);
 }
}
public class TestExtend {
public static void main(String[] args) {
 Son1 s = new Son1();
}
}

運行結果:

子類的無參構造方法

2中的示例:

package classTest;


class Father1{
 public Father1() { 
 }
}
class Son1 extends Father1{
 public Son1() {
 System.out.println("子類的無參構造方法");
 }
 public Son1(int i) {
 System.out.println("子類中有參構造方法"+i);
 }
}
public class TestExtend {
public static void main(String[] args) {
 Son1 s = new Son1();
}
}

運行結果:

子類的無參構造方法

3中的示例(1):

package classTest;
class Father1{

 public Father1(int i) {
 System.out.println("父類中的有參構造方法"+i);
 }
}
class Son1 extends Father1{

 public Son1() {
  //下兩行需注釋掉一行
 super(i);//此時會報錯
 super(1);//此時不會報錯,調(diào)用父類構造函數(shù),但參數(shù)值是固定的,不能在調(diào)用時傳入其他值。
 System.out.println("子類的無參構造方法");
 }
 public Son1(int i) {
   super(i);
 System.out.println("子類中有參構造方法"+i);
 }
}
public class TestExtend {
public static void main(String[] args) {
 Son1 s = new Son1();
}
}

結果:顯示參數(shù)沒有定義

Exception in thread "main" java.lang.Error: Unresolved compilation problem: i cannot be resolved to a variable

3中的示例(2):

package classTest;
class Father1{
 public Father1(int i) {
 System.out.println("父類中的有參構造方法"+i);
 }
}
class Son1 extends Father1{
 public Son1(int i) {
   super(i);
 System.out.println("子類中有參構造方法"+i);
 }
}
public class TestExtend {
public static void main(String[] args) {
 System.out.println("-----");
 Son1 a = new Son1(5);
}
}

結果:

-----

父類中的有參構造方法5

子類中有參構造方法5

4中的示例:

package classTest;
class Father1{
 public Father1() {
 System.out.println("父類的無參構造方法");
}
 public Father1(int i) {
 System.out.println("父類中的有參構造方法"+i);
 }
}
class Son1 extends Father1{

 public Son1() {
 System.out.println("子類的無參構造方法");
 }
 public Son1(int i) {
   super(i);
 System.out.println("子類中有參構造方法"+i);
 }
}
public class TestExtend {
public static void main(String[] args) {
 Son1 s = new Son1();
 System.out.println("-----");
 Son1 a = new Son1(5);
}
}

結果:

父類的無參構造方法

子類的無參構造方法

-----

父類中的有參構造方法5

子類中有參構造方法5

以上這篇關于Java繼承中父類和子類構造函數(shù)的問題就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • SpringMvc靜態(tài)資源訪問實現(xiàn)方法代碼實例

    SpringMvc靜態(tài)資源訪問實現(xiàn)方法代碼實例

    這篇文章主要介紹了SpringMvc靜態(tài)資源訪問實現(xiàn)方法代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-08-08
  • java實現(xiàn)投票程序設計

    java實現(xiàn)投票程序設計

    這篇文章主要介紹了java實現(xiàn)投票程序設計,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2015-12-12
  • 淺析Java中局部變量與成員變量同名解決技巧

    淺析Java中局部變量與成員變量同名解決技巧

    在剛開始學習Java的時候,就了解了Java基礎中的變量,雖然知道這個以后會經(jīng)常用到,但沒想到了基本語法這里,竟然又冒出來了成員變量和局部變量。變來變?nèi)ヌ菀鬃屓烁銜灹?,今天我們就挑揀出來梳理一下?/div> 2016-07-07
  • 分布式系統(tǒng)中的降級熔斷設計問題面試

    分布式系統(tǒng)中的降級熔斷設計問題面試

    這篇文章主要為大家介紹了分布式系統(tǒng)中的降級熔斷設計問題面試解答,有需要的朋友可以借鑒參考下,希望能有所幫助,祝大家多多進步,早日升職加薪
    2022-03-03
  • IDEA 2021.1 的 Win 和 Mac 快捷鍵大全

    IDEA 2021.1 的 Win 和 Mac 快捷鍵大全

    這篇文章主要介紹了IDEA 2021.1 的 Win 和 Mac 快捷鍵大全,本文是小編給大家精心收藏的,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-04-04
  • java swing GUI窗口美化方式

    java swing GUI窗口美化方式

    這篇文章主要介紹了java swing GUI窗口美化方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-10-10
  • java中文及特殊字符的校驗方法

    java中文及特殊字符的校驗方法

    這篇文章主要為大家詳細介紹了java中文及特殊字符的校驗方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-09-09
  • java中流的使用

    java中流的使用

    本文主要介紹了java中流的使用以及分類。具有一定的參考價值,下面跟著小編一起來看下吧
    2017-01-01
  • java實現(xiàn)俄羅斯方塊小游戲

    java實現(xiàn)俄羅斯方塊小游戲

    這篇文章主要為大家詳細介紹了java實現(xiàn)俄羅斯方塊小游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-06-06
  • 三步輕松搭建springMVC框架

    三步輕松搭建springMVC框架

    這篇文章主要教大家三步輕松搭建springMVC框架,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-08-08

最新評論

六安市| 慈溪市| 遵义市| 闸北区| 旬邑县| 罗城| 双鸭山市| 新乡市| 迁西县| 增城市| 垫江县| 晋宁县| 广饶县| 万源市| 公主岭市| 和田县| 舟曲县| 密山市| 葫芦岛市| 乡城县| 琼海市| 曲靖市| 贵州省| 武乡县| 昭通市| 大竹县| 泰来县| 米泉市| 广平县| 宁津县| 凉山| 邳州市| 湖南省| 循化| 长丰县| 怀化市| 永宁县| 烟台市| 寻乌县| 清远市| 京山县|