您好我正在尝试在Eclipse中执行此代码。
abstract class ShapeNew {
int length;
public abstract double area();
}
class Rect extends Shape{
Rect(int side){
this.length = side;
}
public double area(){
System.out.println("area of rectangle"+ length*length);
return length*length;
}
/**
* @param args
*/
public static class Area{
public static void main(String[] args) {
// TODO Auto-generated method stub
ShapeNew rect = new Rect(32);// I am unable to use this. The eclipse throws an error//
rect.area();
}
}
任何人都可以帮助我。为什么我无法将ShapeNew的引用分配给Rect的对象? 我收到此错误
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
Type mismatch: cannot convert from Rect to ShapeNew
答案 0 :(得分:6)
你有一个错字:你需要扩展你定义的类:
class Rect extends ShapeNew {
(另外,看起来你已经实现了一个正方形而不是一个矩形,因为你的区域函数是一个长度)。
答案 1 :(得分:2)
我认为这是一个简单的错字。您的抽象类名称是第1行的ShapeNew,并且您正在尝试获取类Shape的新实例。将Shape更改为ShapeNew
答案 2 :(得分:2)
您必须替换此行:
class Rect extends Shape
通过
class Rect extends ShapeNew
答案 3 :(得分:0)
abstract class ShapeNew {
int length;
public abstract double area();
}
class Rect extends ShapeNew{
Rect(int side){
this.length = side;
}
public double area(){
System.out.println("area of rectangle"+ length*length);
return length*length;
}
}
public class Area{
public static void main(String[] args) {
// TODO Auto-generated method stub
ShapeNew rect = new Rect(32);
rect.area();
}
}
答案 4 :(得分:0)
您收到错误,因为您抽象类是:ShapeNew
并且您从错误的名称继承子类:Shape
。
所以只需将此名称更改为Shape New。
class Rect extends ShapeNew{