繁体   English   中英

java抽象类用法

[英]java abstract class usage

嗨,我正在尝试在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

您有一个错字:您需要从定义的类中扩展:

class Rect extends ShapeNew {

(同样,鉴于区域函数的长度为平方,看来您实现的是正方形而不是矩形)。

我认为这是一个简单的错字。 您的抽象类名称在第1行是ShapeNew,并且您正在尝试获取Shape的新实例。 将Shape更改为ShapeNew

您必须替换此行:

class Rect extends Shape

通过

class Rect extends ShapeNew
  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();
}

 }

您收到错误是因为您的绝对类是: ShapeNew并且您从错误的名称Shape继承了子类。

因此,只需将此名称更改为ShapeNew。

 class Rect extends ShapeNew{

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM