gpt4 book ai didi

java - 阴影最终字段

转载 作者:行者123 更新时间:2023-12-02 02:44:55 25 4
gpt4 key购买 nike

所以我正在尝试生成一个房子(此时是一个非常简单的房子)并且我有这个类:

public class Probability {
public final int MinWindows = 0;
public final int MaxWindows = 0;
//double values represend the percent chance for a specific attribute to
//generate
public final double hasBackDoor = 0;
public final double hasSecondFloor = 0;
public final double hasChimny = 0;
public final double hasGarage = 0;
public final double hasPorch = 0;
}

这个类由不同类型房屋的子类继承:

public class LowClassHouseProbability extends Probability{
public final int MinWindows = 5;
public final int MaxWindows = 10;
public final double hasBackDoor = 55.0;
public final double hasSecondFloor = 10.0;
public final double hasChimny = 5.5;
public final double hasGarage = 30.0;
public final double hasPorch = 60.0;
}

public class MiddleClassHouseProbability extends Probability{
public final int MinWindows = 20;
public final int MaxWindows = 50;
public final double hasBackDoor = 80.0;
public final double hasSecondFloor = 70.0;
public final double hasChimny = 10.0;
public final double hasGarage = 90.0;
public final double hasPorch = 85.0;
}

public class UpperClassHouseProbability extends Probability{
public final int MinWindows = 50;
public final int MaxWindows = 100;
public final double hasBackDoor = 100.0;
public final double hasSecondFloor = 100.0;
public final double hasChimny = 80.0;
public final double hasGarage = 99.0;
public final double hasPorch = 100.0;
}

所以 Probability 的所有子类都隐藏了它的所有字段,在我看来,这些字段看起来很草率,而且读起来有点烦人,但是我需要它们来扩展 Probability,因为当我实际上必须使用该对象时,这会让它变得更容易,因为这样做看起来更好:

public class House {
public House(Probability prob){

}
}

如果我没有概率课并且这样做了:

public class House {
public House(LowClassHouseProbability prob){

}
public House(MiddleClassHouseProbability prob){

}
public House(UpperClassHouseProbability prob){

}
}

随着我创建的子类越多,情况只会变得更糟。所以我的问题是,是否有一种我没有想到的更好的方法来做到这一点,或者我是否只需要采用一种方式或我想到的两种解决方案中的另一种即可。

最佳答案

由于您无法覆盖 java 中父类(super class)的字段,因此这些类根本不需要定义字段..

 public class LowClassHouseProbability extends Probability{
//public final int MinWindows = 50;
//public final int MaxWindows = 100;

这些都是最终声明的,因此您需要在构造函数中设置它们......

LowClassHouseProbability(int minW, int maxW,...){
super(minW, maxW, ....);

MiddleClassHouseProbability(int minW, int maxW,...){
super(minW, maxW, ....);

UpperClassHouseProbability(int minW, int maxW,...){
super(minW, maxW, ....);

并在父类(super class)Probability中定义构造函数:

Probability(int minW, int maxW,...){
MinWindows = minW;
MaxWindows = maxW;
// .... etc etc

关于java - 阴影最终字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44746729/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com