java abstract構造函數調用


構造函數是對象的基本,沒有構造函數就沒有對象。
如果在父類中(這里就是你的抽象類)中顯示的寫了有參數的構造函數,在子類繼承是就必須寫一個構造函數來調用父類的構造函數

public abstract class Person {
    int a = 0;

  //如果不寫Person(),java會默認加上一個不帶參數的構造函數,即Person(){};
Person() { a
= 10;
     System.out.println("class is " + Person.class);
} Person(
int x) { a = x; } }

子類

public class Student extends Person {
    int b = 0;

Student() {
     //super();//可不寫,默認調用Person(); b
= 100;
     System.out.println("class is " + Student.class); } Student(
int x) {
     //super(x);此處若不顯示調用父類的帶參構造函數,則默認調用 無參 構造函數Person();
b
= 200;
} }

測試類

 

public class abTest {
    
    public static void main(String[] args) {
         Student s = new Student();
        System.out.println(s.a);

        Student s1 = new Student(1000);
        System.out.println(s1.a);
    }
}

輸出

class is class AbstractClz.Ab_1.Person
class is class AbstractClz.Ab_1.Student
10
class is class AbstractClz.Ab_1.Person
10

結論:

無參:調用子類的構造函數前,先執行父類的構造函數。

帶參:帶參構造函數需顯示調用super(x),才能調用父類的Person(int x),否則調用默認Person();


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM