java - 无法访问 Kia 类型的封闭实例。必须使用 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");
}
}
}
请注意,Kia 和 Audi 现在是静态内部类并且具有无参数构造函数。接下来,您应该放入另一个文件,类 Driver 如下所示:
class Driver
{
Driver(){}
void driver(CarTest c)
{
c.start();
c.accelerate();
c.brakes();
}
}
最后在第三个文件中,你把你的主类调用其他类,如下所示:
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());
}
}
重要的是把你的类分成不同的文件,而不是把所有东西都放在一个巨大的文件中。它使阅读、修复和真正做任何事情都变得混乱。您还需要确保为将实例化您将new
在其上使用的 AKA 的类创建构造函数。还要确保所有这些文件都在同一个包中。
推荐阅读
- image - 使用 AWS Amplify 从 React Native 上传到 S3
- python - 如果不使用scrapy中的请求,则无法解析自定义结果
- tensorflow - 图像分类器总是给出相同的结果:没有想法
- python-3.x - 将在索引上操作的 strftime 上的数据帧中的月份转换为大写
- php - 为什么我所有的脚本都一起加载,几天后又找不到了?
- python - Time.sleep() 在 python 中影响它上面的代码
- python-3.x - Softmax 的导数输出非常大的形状
- java - jdk.nashorn.internal.ir.annotations 不存在
- c# - 示例 Blazor 项目中 Counter 的状态是否可以在页面切换之间保留?
- python - 能够得到响应但不显示