看到编辑半途而废。
我是java的新手,所有正式的继承声明让我有些困惑。
我有这样的界面:
public interface A{
public void one();
public void two();
}
然后我有两个类似的那样:
public class B implements A{
private int num;
public void one(){
...
}
public void two(){
...
}
public B(){
this.num = 1;
}
}
public class C extends B{
public C(){
super();
}
}
然后我有一个像这样的驱动程序类:
public class Driver{
public static void main(String [] args){
A a_array[] = new A[5];
for(int i=0; i<6; i++){
if(i%2==0){
a_array[i] = new B();
}
else{
a_array[i] = new C();
}
}
}
}
基本上,给定一个接口数组,我试图实现实现该接口的各种类。
现在我的猜测是这个实现有几个问题,但我似乎无法嗅出它们。现在主要是我得到错误'B()不是抽象的,并没有实现方法一()'。
编辑:
好吧让我试试吧...... 界面:
public interface Shape{
public double calcAread();
public double calcPerimeter();
}
实施班:
public class Rectangle implements Shape{
private double length;
private double width;
public double calcArea(){
return this.length*this.width;
}
public double calcPerimeter(){
return (this.length*2)+(this.width*2);
}
public Rectangle(double length, double width){
this.length=length;
this.width=width;
}
// then some other methods including the set methods
}
扩展类:
public class Square extends Rectangle{
public Square(){
super();
}
public Square(double sideLength){
super.setLength(sideLength);
super.setWidth(sideLength);
}
// some more methods
}
除了提及其他继承和扩展类之外,我不能想到更多有用的东西,但它们遵循完全相同的设计和sentax。
编译形状时没有错误,但是'Rectangle不是抽象的并且不覆盖Shape中的抽象方法calcAread()'错误在编译Rectangle类时被触发。
希望这会更具启发性。
由于
答案 0 :(得分:3)
我在代码中看到的唯一问题是i&lt; 5而不是i&lt; 6。数组大小为5,初始化设置为i = 0。 (循环迭代应该是0,1,2,3,4,否则你将获得ArrayIndexOutOfBound异常)
我编译了代码并且运行正常。
答案 1 :(得分:1)
您提供的示例代码可以正常运行。我怀疑你的确切代码和示例代码有所不同。
没有看到确切的错误消息和B类很难说,但是我愿意打赌你的界面中one
的定义和{{1}之间的返回值或参数差异在你的实现中。
编辑:这就是我所看到的问题。您的界面方法称为“one
”。是calcAread
应该在最后吗?
d
因为它在Rectangle
中缺失public double calcAread();
这会导致问题。这让我想知道@Zohaib是如何设法编译的呢!