【问题标题】:Using inherited fields after value update in inherited method [closed]在继承方法中更新值后使用继承字段[关闭]
【发布时间】:2020-03-21 22:05:50
【问题描述】:

我正在研究 Java 中的继承,但我遇到了错误。我定义了一个带有名称字段的超类。据我所知,子类继承字段,继承的字段可以分配新值。我希望 getArea() 主要打印三角形的面积值,但我只打印了 0.0。希望您能够帮助我。 [更新示例]

public class Figure{

double base;
double height;
double area;
public Figure(double base, double height){
this.height=height;
this.base=base;
}
public double getArea(){return area};
}


public class Triangle extends Figure(){
public Triangle(double base, double height){
super(base,height);
}
area=0.5 * base * height;
}


public class Main{

public static void main{
Triangle triangle=new Triangle();
System.out.println(triangle.getArea());
}

}

【问题讨论】:

  • printMyName() 实际上不打印任何内容,它返回名称。你不想用System.out.println 什么的吗?
  • 可以包含构造函数吗?
  • 那么问题到底是什么?
  • 注意 java 命名约定。类名以大写字母开头,变量名以小写字母开头
  • 你写的代码连编译都编译不了,怎么会打印出0。如果定义了显式构造函数,除非您自己指定,否则不会为您生成默认构造函数?

标签: java class inheritance


【解决方案1】:

这是一个应该可以工作的代码,带有一些注释

class Figure{

    double base;
    double height;
    double area;
    public Figure(double base, double height){
        this.height=height;
        this.base=base;
    }

    public double getArea(){return area;};
}


 class Triangle  extends Figure{
    public Triangle(double base,double height){
         super(base,height);
         this.area = 0.5*base*height;
    }

 }

public class Main{

    public static void main (String[] args){
        Triangle triangle=new Triangle(12,8);
        System.out.println(triangle.getArea());
    }

}
  1. 一个文件中不能有多个公共类
  2. 当您显式定义收缩器时,编译器不会生成默认收缩器,因此 Triangle triangle=new Triangle() 不会编译。如果需要使用默认构造函数,请自行声明。
  3. 入口点 main 有一个特定的语法,您应该遵守它以便成为程序中第一个执行的函数。

【讨论】:

  • 非常感谢!所以我无法在构造函数之外访问和编辑继承的区域字段?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-05-02
  • 1970-01-01
  • 1970-01-01
  • 2017-11-04
  • 2016-08-15
  • 1970-01-01
  • 2011-11-21
相关资源
最近更新 更多