无法访问 Kia 类型的封闭实例。必须使用 Kia 类型的封闭实例来限定分配
No enclosing instance of type Kia is accessible. Must qualify the allocation with an enclosing instance of type Kia
package com.abstration.abstractclass;
abstract class CarTest
{
abstract void start();
abstract void accelerate();
abstract void brakes();
}
class Kia extends CarTest
{
void start()
{
System.out.println("Kia started");
}
void accelerate()
{
System.out.println("Kia accelerate");
}
void brakes()
{
System.out.println("kia stops");
}
class Audi extends CarTest
{
void start()
{
System.out.println("Audi started");
}
void accelerate()
{
System.out.println("Audi accelerate");
}
void brakes()
{
System.out.println("Audi stops");
}
}
public static class Driver
{
void driver(CarTest c)
{
c.start();
c.accelerate();
c.brakes();
}
}
public static void main(String args[])
{
Driver d = new Driver();
d.driver(new Kia());
d.driver(new Audi());
}
}
我面临的错误:-
1)No enclosing instance of type Kia is accessible. Must qualify the allocation with an enclosing instance of type Kia (e.g. x.new A() where x is an instance of Kia).
在 CarTest 文件中你应该有:
abstract class CarTest
{
abstract void start();
abstract void accelerate();
abstract void brakes();
static class Kia extends CarTest
{
Kia() {
}
void start()
{
System.out.println("Kia started");
}
void accelerate()
{
System.out.println("Kia accelerate");
}
void brakes()
{
System.out.println("kia stops");
}
}
static class Audi extends CarTest
{
Audi() {
}
void start()
{
System.out.println("Audi started");
}
void accelerate()
{
System.out.println("Audi accelerate");
}
void brakes()
{
System.out.println("Audi stops");
}
}
}
请注意,起亚和奥迪现在是静态内部 classes 并且具有 no-arg 构造函数。接下来您应该放入另一个文件,class 驱动程序,如下所示:
class Driver
{
Driver(){}
void driver(CarTest c)
{
c.start();
c.accelerate();
c.brakes();
}
}
最后在 A THIRD 文件中,您将主 class 放入将像这样调用其他 class 的主 class:
import (thePackage).CarTest.Audi;
import (thePackage).CarTest.Kia;
public class Main {
public static void main(String[] args) {
Driver d = new Driver();
d.driver(new Kia());
d.driver(new Audi());
}
}
重要的是将您的 classes 分成不同的文件,而不是将所有内容都放在一个巨大的文件中。它使阅读、修复和真正做任何事情都变得混乱。您还需要确保为 classes 创建构造函数,这些构造函数将实例化 AKA 您将在它们上使用 new
。还要确保所有这些文件都在同一个包中。
package com.abstration.abstractclass;
abstract class CarTest
{
abstract void start();
abstract void accelerate();
abstract void brakes();
}
class Kia extends CarTest
{
void start()
{
System.out.println("Kia started");
}
void accelerate()
{
System.out.println("Kia accelerate");
}
void brakes()
{
System.out.println("kia stops");
}
class Audi extends CarTest
{
void start()
{
System.out.println("Audi started");
}
void accelerate()
{
System.out.println("Audi accelerate");
}
void brakes()
{
System.out.println("Audi stops");
}
}
public static class Driver
{
void driver(CarTest c)
{
c.start();
c.accelerate();
c.brakes();
}
}
public static void main(String args[])
{
Driver d = new Driver();
d.driver(new Kia());
d.driver(new Audi());
}
}
我面临的错误:-
1)No enclosing instance of type Kia is accessible. Must qualify the allocation with an enclosing instance of type Kia (e.g. x.new A() where x is an instance of Kia).
在 CarTest 文件中你应该有:
abstract class CarTest
{
abstract void start();
abstract void accelerate();
abstract void brakes();
static class Kia extends CarTest
{
Kia() {
}
void start()
{
System.out.println("Kia started");
}
void accelerate()
{
System.out.println("Kia accelerate");
}
void brakes()
{
System.out.println("kia stops");
}
}
static class Audi extends CarTest
{
Audi() {
}
void start()
{
System.out.println("Audi started");
}
void accelerate()
{
System.out.println("Audi accelerate");
}
void brakes()
{
System.out.println("Audi stops");
}
}
}
请注意,起亚和奥迪现在是静态内部 classes 并且具有 no-arg 构造函数。接下来您应该放入另一个文件,class 驱动程序,如下所示:
class Driver
{
Driver(){}
void driver(CarTest c)
{
c.start();
c.accelerate();
c.brakes();
}
}
最后在 A THIRD 文件中,您将主 class 放入将像这样调用其他 class 的主 class:
import (thePackage).CarTest.Audi;
import (thePackage).CarTest.Kia;
public class Main {
public static void main(String[] args) {
Driver d = new Driver();
d.driver(new Kia());
d.driver(new Audi());
}
}
重要的是将您的 classes 分成不同的文件,而不是将所有内容都放在一个巨大的文件中。它使阅读、修复和真正做任何事情都变得混乱。您还需要确保为 classes 创建构造函数,这些构造函数将实例化 AKA 您将在它们上使用 new
。还要确保所有这些文件都在同一个包中。