到底是哪里的問題,求解答



uj5u.com熱心網友回復:
TubeLight()是個構造方法,構造方法不能呼叫,只能在實體化時使用,你的TubeLight類只有一個有參構造方法,實體化時一定要帶引數,TubeLight d1=new TubeLight(32,50,“白色”,“開”);至于d1.TubeLight(32,50,“白色”,“開”);則完全是錯誤的用法
uj5u.com熱心網友回復:
另外,構造方法的修飾符void是可以省略不寫的,一般大家都不寫,所有的構造方法都是無回傳值的uj5u.com熱心網友回復:
樓上說的不對;方法名難道和 類名 不能相同嗎?只有建構式能和類名相同? 這只是撰寫規范,不是規則;
樓主的錯誤在于,不明白什么是抽象類,抽象類是不允許直接實體化的,因為抽象類中可能存在抽象方法是需要實作的;
可以這樣實體化
TubeLight t = new TubeLight() {
// 這里如果存在抽象方法,需要實作
};
uj5u.com熱心網友回復:
TubeLight是abstract抽象類,在所有面向物件的語言里,抽象類不能被實體化,也就是不能new。你把關鍵字abstract去掉就可以了。uj5u.com熱心網友回復:
試了一下還真的是,構造方法被void或回傳引數型別修飾后就變成成員方法了
謝謝
uj5u.com熱心網友回復:
謝謝各位,完成了uj5u.com熱心網友回復:
很多寫法不符合規范,一般和類同名默認為構造法不需要加void,抽象類中卻沒有抽象方法,不想初始化中加入引數,可以添加一個空構造。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/91765.html
標籤:Java SE
