所以我有两节课:Property和Houses。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方法中运行它时,如下所示
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。试试看
95 / 100
0
0.95 * super.value
要么
95.0 / 100 * super.value