2014-10-30 73 views
0

如果你永遠不會從該類實例化對象,那麼你什麼時候會使用它的構造函數?對不起,如果我以無知的方式離開。我剛剛在我的高中開始上Java課。在Java的抽象類中使用構造函數有什麼意義?

+2

_any_類中構造函數的要點是初始化類的狀態。 – 2014-10-30 23:09:12

+0

'Abstract'類可能與其父類有不同的初始化需求,或者可能需要充當它們的代理。他們可以充當實施的便利 – MadProgrammer 2014-10-30 23:12:23

回答

0

你有一個構造函數,所以子類可以正確初始化它們父類的狀態。

public abstract class Parent { 
    private final String name; 

    public Parent(String n) { this.name = n; } 

    public String getName() { return this.name; } 
} 

public class Child extends Parent { 
    public Child(String name) { super(name); } 
} 

將不會有任何其他的方式來初始化Parentprivate final String name屬性沒有構造。

+0

謝謝!我現在明白了 – 2014-10-30 23:15:19

1

因爲子類可能會使用它。例如:

public abstract class Foo { 
    protected String name; 
    public Foo(String name) { 
     this.name = name; 
    } 
} 

public class Bar extends Foo { 
    public Bar(String name) { 
     super(name); //<-- necessary, otherwise it won't compile 
    } 

    public Bar() { 
     super("default name"); // <-- necessary, otherwise it won't compile 
    } 
} 
0

那麼你的父類或抽象類通過所有子類或子類存儲公共變量。 這可以更容易地將不同的對象(具有相同的父級)存儲到像ArrayList這樣的集合中。 它還允許您輕鬆操作和對象,而不用擔心其子類中包含的細節。 你通過在子類中調用super()來實例化構造函數。