[英]Instantiate subclass of abstract class
如何實例化抽象類的子類? 它給出了錯誤-無法訪問類型為abstractclass的封閉實例。 無論我如何交換價值觀。 我知道我不能使用汽車cuz抽象類不能被實例化。
public class abstractclass {
public static void main(String args[]){
Car car1 = new Car();
}
abstract class MotorVehicle
{
int fuel;
int getFuel()
{
return this.fuel;
}
abstract void run();
}
class Car extends MotorVehicle
{
void run()
{
System.out.print("Wrroooooooom");
}
}
}
它不允許您實例化它們,因為您已將它們聲明為內部類。 在類聲明的前面加上static
,就可以做到這一點:
class Outer {
class Inner {
}
static class Nested {
}
}
如果嵌套類是內部類(非靜態),則它屬於外部類的實例,而不是外部類本身。 內部類需要實例化外部類的實例。 靜態嵌套類沒有。
Outer outer = new Outer();
Outer.Inner inner = outer.new Inner();
Outer.Nested nested = new Outer.Nested();
請參閱嵌套類教程。 這就是“無封閉實例”消息的含義。 沒錯,不能直接實例化抽象類,但是Car
不是抽象的。
嗨,這里Car類是abstractclass的內部類。 因此,只有在將內部類聲明為static時,您才能這樣實例化內部類
讓我們更改您的程序:
public class Abstract {
public static void main(String args[]){
Car car1 = new Car();
}
abstract class MotorVehicle
{
int fuel;
int getFuel()
{
return this.fuel;
}
abstract void run();
}
static class Car
{
void run()
{
System.out.print("Wrroooooooom");
}
}
}
在這里,我將Car類聲明為static,並且可以在“ abstractclass”中實例化它。
有關更多參考,請查看獲取“沒有類型的封閉實例...”錯誤
刪除以下內容:public class abstractclass {
並從文件末尾開始}。
您已經將整個程序包裝到一個抽象類中。 那就是錯誤的:)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.