【发布时间】:2022-01-07 18:15:48
【问题描述】:
我正在学习Java中的继承,我正在尝试解决以下代码中的错误:
public static void main(String[] args) {
Yellow yellow=new Yellow("yellow");
yellow.ChangeColor();
}
abstract class SpecialColor{
String color;
SpecialColor(String color){
this.color=color;
}
abstract void ChangeColor();
public String ShowColor(String color) {
return color;
}
}
class Yellow extends SpecialColor{
Yellow(String color) {
super(color);
}
@Override
void ChangeColor() {
color="yellow";
System.out.println("The color is "+color);
}
}
我正在尝试做的任务基本上是说我需要创建一个具有 2 个属性的抽象类 SpecialColor - 颜色名称(字符串)和两个方法 - 抽象 void ChangeColor(),另一个显示颜色名称,而类Yellow 扩展了这个类并实现了抽象方法,名称需要改为“yellow”,并在 main.js 中显示这些类的使用。我遇到的错误出现在 main 方法的第一行代码中 - “没有可访问的封闭类型实例”,我试图解决这个问题,使 Yellow 类成为静态,但随后在 super(color) 行上弹出一个新错误上面写着“由于某些中间构造函数调用,没有可用的 sestijanuar8 类型的封闭实例”。我很难理解抽象类和方法,所以任何形式的帮助都将不胜感激!
【问题讨论】:
-
我认为这两个类和您的主要方法都在您省略发布的另一个类中。请发帖minimal reproducible example。
-
我建议初学者每个文件一节课。它可以帮助您专注于主要概念。
-
是的,它们是,但我对复制粘贴整个代码犹豫不决。对于这篇长篇文章,我深表歉意,我是新手,我仍然了解在 StackOverflow 上发帖的工作原理。
-
我阅读了它并找到了有用的信息。再次感谢您帮助我!
标签: java inheritance abstract super