java - setter 方法和返回 getter 的问题

标签 java if-statement setter getter getter-setter

我正在尝试创建一个设置方法(setAvailForAssembly)来设置已组装的库存水平,但由于某种原因,我的 if 条件似乎没有产生任何效果。为什么会发生这种情况?

主类

    public class TestAssembledPart {
        public static void main(String args[]) {
            // Constructing two Part objects (the base parts)
            Part part0 = new Part("p101", "Crank", 218, 12.20);
            Part part1 = new Part("p102", "Pedal", 320, 14.30);
            // Constructing AssembledPart object assembled from p101 & p102        
            AssembledPart part2 = new AssembledPart("p183", "Crank & Pedal", 80, 3.50, part0, part1);
            // replenishing stock by 100 items        
            part2.replenish(100);
            System.out.println(part2);
            // Supplying the maximum possible assembled parts - combination         
            // of existing parts and base parts available for assembly         
            System.out.println("Supplying max number of (assembled) part");
            int totalAvail = part2.getStockLevel() + part2.getAvailForAssembly();
            System.out.println("part2 stocklevel: " + part2.getStockLevel() + " part2 available for assembly: " + part2.getAvailForAssembly());
            }
    }

组装零件类

    public class AssembledPart extends Part {

        private Part basica;
        private Part basicb;
        private int assembledstocklevel;

        public AssembledPart(String id, String name, int stocklevel, double unitprice,
        Part part0, Part part1) {

            super(id, name, stocklevel, unitprice);

            this.basica = part0;
            this.basicb = part1;
        }

        public void setAvailForAssembly() {
            if(basica.getStockLevel() >= basicb.getStockLevel()){
        assembledstocklevel = basica.getStockLevel();
            } else assembledstocklevel = basicb.getStockLevel();
        }

        public int getAvailForAssembly() {
            return assembledstocklevel;

        }

    }

零件类

    public class Part {

        protected int stocklevel;

        public Part(String id, String name, int stocklevel, double unitprice) {
            this.id = id;
            this.name = name;
            this.stocklevel = stocklevel;
            this.unitprice = unitprice;
        }

        public int getStockLevel() {
            return stocklevel - qty;
        }

        public void setStockLevel(int stocklevel) {
            this.stocklevel = stocklevel;
        }


    }

setter not working!

最佳答案

由于您的 main 方法,您只是忘记调用 setAvailForAssembly() 方法,这就是您在调用 gette 方法时得到 0 的原因。

此外,getter 和 setter 通常用于访问字段,不提供任何额外的逻辑。在你的情况下,不带参数的 setter 方法可能会在将来让某人感到困惑。只需将其称为 calculateAvailForAssembly 或类似的名称即可。

关于java - setter 方法和返回 getter 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33161946/

相关文章:

java - 用户与当前数据匹配

java - Layer2 中的签名外观字体颜色(itext 7)

java - ClassNotFound 使用 URLClassLoader 加载 Jar

java - "for loop"仅循环一次或两次。如果是更好的选择吗?

c - 如何检查输入何时超出二维数组列中的行?

java 构造函数的数组固定元素

validation - 如何在抽象类级别提供值验证?

java - 方法链 + 继承不能很好地结合在一起?

javascript - 使用setTimeout和if来控制对象(Javascript)

c++ - 在头文件中实现 getter 和 setter