關(guān)于java中構(gòu)造函數(shù)的一些知識詳解
java的構(gòu)造函數(shù)是一個非常重要的作用,首先java里的構(gòu)造函數(shù)是可以重載的,而且因為也是可以繼承在父類的構(gòu)造函數(shù),所以在子類里,首先必然是調(diào)用父類的構(gòu)造函數(shù)??梢钥聪旅娴膬蓚€例子來對比:
public class Test
{
public static void main(String args[])
{
B b = new B(100);
}
}
class A
{
public A()
{
System.out.println("A without any parameter");
}
public A(int i)
{
System.out.println("A with a parameter");
}
}
class B extends A
{
public B()
{
System.out.println("B without any parameter");
}
public B(int i)
{
System.out.println("B with a parameter");
}
}
這個例子最后輸出的是
A without any parameter
B with a parameter
可以看到首先調(diào)用的是父類的構(gòu)造函數(shù),然后再是調(diào)用自己的構(gòu)造函數(shù)。但是因為這里的B類中的有參數(shù)的構(gòu)造函數(shù)是沒有super父類,所以導(dǎo)致它只會執(zhí)行父類的沒有參數(shù)的構(gòu)造函數(shù)。如果要讓它執(zhí)行有參數(shù)的父類的構(gòu)造函數(shù),那么就要這樣寫代碼:
public class Test
{
public static void main(String args[])
{
B b = new B(100);
}
}
class A
{
public A()
{
System.out.println("A without any parameter");
}
public A(int i)
{
System.out.println("A with a parameter");
}
}
class B extends A
{
public B()
{
System.out.println("B without any parameter");
}
public B(int i)
{
super(i); //這里就是繼承自父類的有參數(shù)的構(gòu)造函數(shù)
System.out.println("B with a parameter");
}
}
所以最后輸出的是:
A with a parameter
B with a parameter
因此,派生類必須通過super來調(diào)用父類的含有參數(shù)的構(gòu)造函數(shù)。以下再附一道題:
public class Test extends X
{
Y y = new Y();
Test()
{
System.out.print("Z");
}
public static void main(String args[])
{
new Test();
}
}
class X
{
Y b = new Y();
X()
{
System.out.print("X");
}
}
class Y
{
Y()
{
System.out.print("Y");
}
}
輸出的結(jié)果是什么?
首先我們來分析這道題:
因為首先看這個main函數(shù),這個main函數(shù)只有一句代碼: new Test();因為發(fā)現(xiàn)這個Test類是繼承自X,所以首先要構(gòu)造X,那么就進行X類的運行 Y b = new Y(),然后我們可以看到輸出的Y,然后就是執(zhí)行X類的構(gòu)造函數(shù),輸出X;接著就是構(gòu)造Y,然后執(zhí)行Test自己的構(gòu)造函數(shù),輸出Z,所以輸出結(jié)果是YXYZ。
以上這篇關(guān)于java中構(gòu)造函數(shù)的一些知識詳解就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
- Java 無參數(shù)構(gòu)造函數(shù)的應(yīng)用
- java構(gòu)造函數(shù)示例(構(gòu)造方法)
- Java構(gòu)造函數(shù)的相互調(diào)用代碼示例
- Java 重載、重寫、構(gòu)造函數(shù)的實例詳解
- java枚舉類的構(gòu)造函數(shù)實例詳解
- Java構(gòu)造函數(shù)與普通函數(shù)用法詳解
- 深入理解Java中的構(gòu)造函數(shù)引用和方法引用
- 不同Java泛型構(gòu)造函數(shù)的詳解
- Java序列化中子類、父類構(gòu)造函數(shù)問題實例分析
- Java的無參構(gòu)造函數(shù)用法實例分析
相關(guān)文章
SpringSecurity安全框架在SpringBoot框架中的使用詳解
在Spring?Boot框架中,Spring?Security是一個非常重要的組件,它可以幫助我們實現(xiàn)應(yīng)用程序的安全性,本文將詳細(xì)介紹Spring?Security在Spring?Boot框架中的使用,包括如何配置Spring?Security、如何實現(xiàn)身份驗證和授權(quán)、如何防止攻擊等2023-06-06
Spring?Boot中使用Swagger3.0.0版本構(gòu)建RESTful?APIs的方法
Swagger?是一個規(guī)范和完整的框架,用于生成、描述、調(diào)用和可視化?RESTful?風(fēng)格的?Web?服務(wù),這篇文章主要介紹了Spring?Boot中使用Swagger3.0.0版本構(gòu)建RESTful?APIs的方法,需要的朋友可以參考下2022-11-11
SpringBoot利用限速器RateLimiter實現(xiàn)單機限流的示例代碼
本文主要介紹了SpringBoot利用限速器RateLimiter實現(xiàn)單機限流的示例代碼,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-01-01
java 中序列化與readResolve()方法的實例詳解
這篇文章主要介紹了java 中序列化與readResolve()方法的實例詳解的相關(guān)資料,這里提供實例幫助大家理解這部分知識,需要的朋友可以參考下2017-08-08
【spring-boot】快速構(gòu)建spring-boot微框架的方法
本篇文章主要介紹了【spring-boot】快速構(gòu)建spring-boot微框架的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-12-12

