Java物件創建程序中構造方法到底做了什么
下面展示一些 代碼,
class Person{
private String name;
private int age;
public Person() {
}
public Person(String name, int age) {
this.name = name;
this.age = age;
}
}
class Student extends Person{
private String stuNo;
private String schoolName = "唐山學院";
public Student() {
}
public Student(String name, int age, String stuNo, String schoolName) {
super(name, age);
this.stuNo = stuNo;
this.schoolName = schoolName;
}
}
class Test{
public static void main(String[] args) {
Student student = new Student();
}
}
創建物件大體分為四步:
1開辟記憶體空間并進行初始化
2遞回呼叫父類的創建物件程序
3初始化本類屬性
4呼叫構造方法

對上面的四步進行具體分析
1.開辟記憶體空間并進行初始化:此時我們的student物件已經開辟了記憶體空間并且有一個虛地址值,此時對于初始化的理解是各個型別的默認值,
2.呼叫父類的構造方法
public Student() {
//super();
}
當我們呼叫子類的構造方法時,都會默認的呼叫父類的無參構造方法,(此時進入父類的構造方法,遵循上面的四步原則),super()或者this(),只能放在構造方法的第一行,只可存在一個,
3.

此時進行初始化屬性
4.呼叫構造方法中實際代碼,
總結一下構造方法內部運行其實是這樣的,個人認為,本人小菜鳥,只是發表一下自己的看法
這是一個構造方法
public Student() {
1.開辟記憶體空間
2.為成員屬性進行初始化,即為成員設定默認值 0 null ‘/u0000’
3.suer()如果沒有父類省略,如果有的話進入父類構造方法依舊如此執行
4.若對屬性進行直接賦值 shoolName = “唐山學院” 進行此賦值操作,
5.呼叫,構造方法中其他陳述句
}
若有父類總體步驟為
父類靜態方法>子類靜態方法>父類初始化(默認值操作)>父類構造方法>子類初始化(默認值操作)>子類構造方法
其實是先呼叫子類的構造方法,但是子類構造方法并未執行完畢,就進入父類構造方法,所以其實是父類先執行完,先執行完,所以排在前面,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/272464.html
標籤:java
上一篇:Java 基礎入門訓練
下一篇:普歌-允異團隊-【Java知識點】這些Java學習路上你必須知道的底層原理(2)為什么介面中沒有構造方法而抽象類中有構造方法?
