如何访问Abstract超类实例变量
所以我有两个class: Property
和Houses
。 Property
是抽象超类,而Houses
是它的子类。
这是Property
的代码
public abstract class Property{ String pCode; double value; int year; public Property(String pCode, double value , int year){ this.pCode = pCode; this.value = value; this.year = year; } public Property(){ pCode = ""; value = 0; year = 0; } public abstract void depreciation(); //Accessors private String getCode(){ return pCode; } private double getValue(){ return value; } private int getYear(){ return year; } //Mutators private void setCode(String newCode){ this.pCode = newCode; } private void setValue(double newValue){ this.value = newValue; } private void setYear(int newYear){ this.year = newYear; } public String toString(){ return ("Code: " + getCode() + "\nValue: " + getValue() + "\nYear: " + getYear()); } }
这是Houses
的代码
public class Houses extends Property{ int bedrooms; int storeys; public Houses(){ super(); // call constructor this.bedrooms = 0; this.storeys = 0; } public Houses(String pCode , double value , int year ,int bedrooms , int storeys){ super(pCode,value,year); this.bedrooms = bedrooms; this.storeys = storeys; } //accessors private int getBedrooms(){ return bedrooms; } private int getStoreys(){ return storeys; } private void setBedrooms(int bedrooms){ this.bedrooms = bedrooms; } private void setStoreys(int storeys){ this.storeys = storeys; } public void depreciation(){ this.value = 95 / 100 * super.value; System.out.println(this.value); } public String toString(){ return (super.toString() + "Bedroom:" + getBedrooms() + "Storeys:" + getStoreys()); } }
我现在的问题是,在方法depreciation
,每当我尝试在main
方法中运行它时,如下所示
public static void main(String[] args) { Houses newHouses = new Houses("111",20.11,1992,4,2); newHouses.depreciation(); }
它打印出0.0。 为什么不打印20.11? 我该如何解决?
==============================================
编辑:感谢您修复我的愚蠢错误>。<
但是,让我们说我的财产正在使用
private String pCode; private double value; private int year;
现在我无法访问它们,因为它们是私有访问,有没有其他方法可以访问它们?
那是因为95 / 100
是一个整数除法,结果产生0
。 试试吧
0.95 * super.value
要么
95.0 / 100 * super.value
代替:
this.value = 95 / 100 * super.value;
你应该有:
this.value = 95d / 100d * super.value;
95/100导致int值为0。
在我的手机上,所以我不能做适当的代码块,但在这里它。
private int x; public int getX() { return x; }