好吧,人們可能會試圖將其標記爲重複,只需閱讀標題並且不需要真正閱讀問題即可。所以請知道我已經試圖在這個平臺上看看其他問題,但還沒有找到能夠完全解決我的疑問的東西。請讓我伸出手,問我的問題。提前致謝。Java:通過主要方法抽象類調用
接口是絕對抽象的,不能被實例化;一個Java抽象類也不能被實例化,但是如果main()存在,可以被調用。
我不完全理解聲明的後半部分。這是否談論直接在抽象類本身內的主要方法?它是指通過孩子的主要方法調用抽象類嗎?或兩者 ?
其次,我見過類似以下的例子。
abstract class Printer
{
public void print() { … };
}
public class TestPrinter
{
public static void main(String[] args)
{
// use of anonymous class
final Printer p = new Printer()
{
@override
public void print()
{
...
}
}
}
}
而且有人告訴我們,一個匿名班正在工作。但是,我真的不明白,因爲變量'p'顯然被分配給......並且它是一個抽象類變量!這怎麼可能呢?我認爲抽象類不能被實例化或初始化。
任何幫助,將不勝感激。
'final Printer p = new Printer()'這一行指的是一個新類,它是抽象類的一個子類,最重要的是覆蓋了print()方法。 –
@AhhishekVasisht謝謝你的答案。其實,我知道的很多。我知道「新課堂」是每個人都在談論的匿名課程。但是,如何將匿名類分配給「最終打印機p」呢?打印機不是抽象的嗎?如果是這樣,沒有人說抽象類不能被實例化嗎? – Grateful
你的問題的答案在這裏:http://docs.oracle.com/javase/specs/jls/se7/html/jls-15.html#jls-15.9.1即,「被實例化的類是匿名的子類「。 –