使用Println显示超类方法的结果

安吉拉·玛丽·戴利(Angela Marie-Daley)

我已经开发了这三个类:

查找区域

package myapp;

public class FindArea {

    public static void main(String[] args) {
        Figure f = new Figure(10, 10);
        Rectangle r = new Rectangle(4, 4);
        Triangle t = new Triangle(4,8);
        Figure figref;
        figref = r;
        System.out.println("Area is: " + r.area());
        System.out.println(figref.area());

        System.out.println(t.area());
        System.out.println("Area is: " + f.area());
    }
}

长方形

package myapp;

public class Rectangle extends Figure {
    Rectangle(double a, double b) {
        super(a, b);
    }

    double area() {
        System.out.println("Area of Rectangle is:");
        return width*length;
    }
}

三角形

package myapp;

public class Triangle extends Figure {
    Triangle(double a, double b) {
        super(a,b);
    }

    double area() {
        System.out.println("Area of Triangle is: ");
        return (width/2)*length;
    }

}

数字

package myapp;

public class Figure {
    double width;
    double length;

    Figure(double dimL, double dimW) {
        width = dimW;
        length = dimL;
    }

    double area () {
        System.out.println("Unknown shape. Area cannot be defined.");
        return 0;
    }
}

我希望FindArea的输出显示以下内容:

Area is: Area of Rectangle is:
16.0
Area of Rectangle is:
16.0
Area of Triangle is: 
16.0
Unknown shape. Area cannot be defined.
Area is: 0.0

但是,显示的结果如下:

Area of Rectangle is:
16.0
Area of Triangle is: 
16.0
Unknown shape. Area cannot be defined.
Area is: 0.0

为什么System.out.println("Area is: " + r.area());忽略了该行?

System.out.println("Area is: " + r.area());语句不会被忽略。实际上,该程序的输出如下所示:

Area of Rectangle is:
Area is: 16.0
Area of Rectangle is:
16.0
Area of Triangle is: 
16.0
Unknown shape. Area cannot be defined.
Area is: 0.0

这样您就可以看到Area is:打印正确。

该语句System.out.println("Area is: " + r.area());执行以下操作:

  1. r.area() 首先被调用。
  2. 由于以下原因导致Area of Rectangle is:首先显示System.out.println("Area of Rectangle is:")
  3. width * length在这种情况下,将返回返回值16.0这是第一个println按如下方式打印的Area is: 16.0

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用Println显示超类方法的结果

来自分类Dev

使用方法创建超类

来自分类Dev

使用方法创建超类

来自分类Dev

超类和子类——方法使用

来自分类Dev

“查找用法”显示类方法的错误结果

来自分类Dev

在php中使用类并显示结果

来自分类Dev

println错误:位置类,方法println()

来自分类Dev

从超类的超类调用方法

来自分类Dev

从超类调用方法

来自分类Dev

从超类调用方法

来自分类Dev

使用Javassist修改在超类中声明的方法

来自分类Dev

使用超类引用调用重载的继承方法

来自分类Dev

在超类实例的对象上使用子类的方法

来自分类Dev

如何使用抽象超类中子类的方法

来自分类Dev

了解使用Super访问超类成员的方法

来自分类Dev

了解使用Super访问超类成员的方法

来自分类Dev

如何使用最终方法PHP防止子类重写超类

来自分类Dev

使用Javassist修改在超类中声明的方法

来自分类Dev

如何使用自定义内容扩展超类的方法

来自分类Dev

如何在超类方法中使用子类参数?

来自分类Dev

在子类的方法中本地调用超类方法时,使用“ super”关键字还是使用超类实例?

来自分类Dev

模拟超类方法调用

来自分类Dev

如何隐藏超类的方法?

来自分类Dev

覆盖超类中的方法

来自分类Dev

调用超类方法operator ==

来自分类Dev

超类的子方法(java)

来自分类Dev

重写超类继承的方法

来自分类Dev

子类和超类方法

来自分类Dev

Clojure:调用超类方法