当前位置: 首页 > 知识库问答 >
问题:

Java继承/覆盖输出问题[duplicate]

濮阳原
2023-03-14

在这个程序中,我试图通过使用子类ResziableCircle My code中的重写方法为radious变量赋值

import java.util.*;

public class driver {
    public static void main(String[] args) {
        System.out.println("welcome to out program\\show the circle info ");
        System.out.println("Enter the radious value");
        Scanner input = new Scanner(System.in);
        double radious = input.nextDouble();
        SecondCircle circle = new SecondCircle(radious);
        System.out.println(circle.ToString() + "\n---------------------\n resize the circle\nenter the percent");
        int percent = input.nextInt();
        ResziableCircle redefineCircle = new ResziableCircle(radious);
        redefineCircle.resize(percent);
        System.out.println(redefineCircle.toString() + "\n----------------");
    }
}
//define the interface
public interface GeometricObject {
    public double getPerimeter();

    public double getArea();
}
//define the class that implements the interface
public class SecondCircle implements GeometricObject {
    protected double radious;

    public SecondCircle() {
    }

    public SecondCircle(double radious) {
        this.radious = radious;
    }

    public String ToString() {
        return "Circle [ radious = " + this.radious + " ] ";
    }

    public double getPerimeter() {
        return 2 * 3.14 * this.radious;
    }

    public double getArea() {
        return 3.14 * (Math.pow(this.radious, 2));
    }
}
//define another interface
public interface Resizable {
    public void resize(int percent);
}
//define a class that inherits the secondCircle class and implements the 
//interface  Resizable
public class ResziableCircle extends SecondCircle implements Resizable {
    public ResziableCircle(double radious) {
        super(radious);
    }

    public void resize(int percent) {
        double result = super.radious * (percent / 100);
        super.radious = result;
    }

    public String toString() {
        return "ResziableCircle [ radious = " + super.radious + "]";
    }
}
welcome to out program how the circle info 
Enter the radious value
5
Circle [ radious = 5.0 ] 
---------------------
 resize the circle
enter the percent
5
ResziableCircle [ radious = 0.0]

为什么在调用resize函数后,输出中有radious zero的值?我试图找出代码中的问题在哪里,但找不到。

共有1个答案

司寇昱
2023-03-14

尝试输入其他数字,如100, 200, 400。

用int除以int,结果为int。

将5除以100,结果为0。

 类似资料:
  • 问题内容: 为什么超类的实例变量在继承中不被覆盖? 问题答案: 因为继承旨在修改行为。行为是通过方法公开的,这就是为什么可以覆盖它们的原因。 字段不是行为而是状态。您不需要修改它,也不需要修改超类使用的私有方法。它们旨在让超类完成其工作。

  • 问题内容: 我正在阅读“深入Python”,并在有关类的章节中给出了以下示例: 然后作者说,如果要覆盖该方法,则必须使用正确的参数显式调用父方法。 如果该班有一个以上的祖先班怎么办? 我是否必须显式调用所有祖先类的方法? 另外,我是否必须对要覆盖的其他任何方法执行此操作? 问题答案: 关于子类-超类调用,这本书有些过时了。在子类化内置类方面也有些过时。 如今看起来像这样: 请注意以下几点: 我们可

  • 问题内容: 我有一个具有通用方法的抽象类,并且我想通过用特定类型代替通用参数来覆盖通用方法。所以在伪代码中,我有以下内容: 但是由于某种原因,我不允许这样做?我是在犯某种语法错误还是不允许这种继承和覆盖?具体来说,由于eclipse IDE不断提醒我要实现,我遇到了一个错误。 这就是我希望上面的代码起作用的方式。在我的代码的其他地方,有一个方法可以期望实现对象的实例,这具体意味着它们具有我可以使用

  • 本文向大家介绍解析Java继承中方法的覆盖和重载,包括了解析Java继承中方法的覆盖和重载的使用技巧和注意事项,需要的朋友参考一下 方法的覆盖 在类继承中,子类可以修改从父类继承来的方法,也就是说子类能创建一个与父类方法有不同功能的方法,但具有相同的名称、返回值类型、参数列表。   如果在新类中定义一个方法,其名称、返回值类型和参数列表正好与父类中的相同,那么,新方法被称做覆盖旧方法。   参数列

  • 并尝试通过Hibernate使用策略连接实现继承,但当我使用此策略时,我收到异常: 奇怪的是,如果我选择另一个策略(单表或TABLE_PER_CLASS),错误不会出现

  • 问题内容: 我们正在将EasyMock和PowerMock与JUnit一起使用。使用的覆盖率工具是ECLEmma。使用EasyMock,它会以绿色正确显示覆盖范围(已覆盖)。但是,对于使用PowerMock进行了单元测试的代码,覆盖范围显示为红色(未覆盖)。在网络上阅读过类似的问题。但是,只想检查是否有解决方案。 谢谢 Venkatesh 问题答案: 这是一个已知的问题:https : //git