当前位置: 首页 > 知识库问答 >
问题:

构造函数错误:如何通过参数化构造函数设置这些属性?

秦昂然
2023-03-14

1.如何通过参数化构造函数设置这些属性??

类文件

public class Product{
    private String Name;
    private String Color;
    private int Price;
    private int Stock;
    private int SKU;
    

>

  • 我想通过传递参数构造函数的setter设置这些属性,但它没有设置这些属性

    public void setName(String Name){
        this.Name=Name;
    }
    public void setColor(String Color){
        this.Color=Color;
    }
    public void setPrice(int Price){
        if (Price <= 0){
            System.out.println("Price can't be 0 or negative");
        }
        else{this.Price=Price;
        }
    
    }
    public void setStock(int Stock){
        if(Stock == 0){
            System.out.println("Stock not avaible");
        }
        else{
            this.Stock=Stock;
        }
    
    }
    public void setSKU(int SKU){
        if(SKU<6){
            System.out.println("Manimum allow quntity is 6");
        }
        else{
            this.SKU=SKU;
        }
    }
    

    在这里,我想通过toString方法显示属性

    public String toString(){
        return "\nProduct name: " + this.Name + "\nProduct color: " + this.Color + "\nProduct price: " + this.Price + "\nProduct stock: " + this.Stock + "\nProduct SKU: " + this.SKU;
    }
    
    Product(){}
    
    //parametriaz constractor
    Product(String Name,String Color,int Price,int Stock,int SKU){
        System.out.println("Run");
        setName(Name);
        setColor(Color);
        setPrice(Price);
        setStock(Stock);
        setSKU(SKU);
        toString();
    }
    

    }对象文件

    为什么我无法通过构造函数设置这些属性??

    public class Runnable{public static void main(String[]args){Product p1=新产品(“pc”,“Grey”,5000,10,2);

            //This line also give error why??
            //p1.Product("pc","Grey",5000,10,2);
        }
    }
    
  • 共有1个答案

    万俟鸿波
    2023-03-14

    按照惯例,字段名以大小写形式出现。

    public class Product {
        private String name;
        private String color;
        private int price;
        private int stock;
        private int sku;
    
        Product() {
        }
    
        //Parameterized constructor
        Product(String name, String color, int price, int stock, int sku) {
            System.out.println("Run");
            this.setName(name);
            this.setColor(color);
            this.setPrice(price);
            this.setStock(stock);
            this.setSku(sku);
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public String getColor() {
            return color;
        }
    
        public void setColor(String color) {
            this.color = color;
        }
    
        public int getPrice() {
            return price;
        }
    
        public void setPrice(int price) {
            if (price <= 0) {
                System.out.println("Price can't be 0 or negative");
            } else {
                this.price = price;
            }
    
        }
    
        public int getStock() {
            return stock;
        }
    
        public void setStock(int stock) {
            if(stock == 0){
                System.out.println("Stock not avaible");
            }
            else{
                this.stock=stock;
            }
        
        }
    
        public int getSku() {
            return sku;
        }
    
        public void setSku(int sku){
            if(sku<6){
                System.out.println("Manimum allow quntity is 6");
            }
            else{
                this.sku=sku;
            }
        }
    
        @Override
        public String toString() {
            return "Product [color=" + color + ", name=" + name + ", price=" + price + ", sku=" + sku + ", stock=" + stock
                    + "]";
        }
    
    
    
        //Consume
        public static void main(String[] args) {
    
            System.out.println("using Constructor only");
            Product p = new Product("pc","Grey",5000,10,2);   // Right way to call contructor
            System.out.println(p); // Prints the object using toString()
            
            //OR
            System.out.println(new Product("pc","Grey",5000,10,2));
    
            //OR
            System.out.println("using Setters and getters only");
            Product p1 = new Product();
            p1.setName("pc");
            p1.setColor("Grey");
            p1.setPrice(5000);
            p1.setStock(10);
            p1.setSku(2);
    
            System.out.println(p1);
        }
    
    }
    
    ❯ java Product.java
    using Constructor only
    Run
    Manimum allow quntity is 6
    Product [color=Grey, name=pc, price=5000, sku=0, stock=10]
    Run
    Manimum allow quntity is 6
    Product [color=Grey, name=pc, price=5000, sku=0, stock=10]
    using Setters and getters only
    Manimum allow quntity is 6
    Product [color=Grey, name=pc, price=5000, sku=0, stock=10]
    
     类似资料:
    • 当创建Gio controller对象时,可以将配置参数传递给controller,具体传递方式如下所示: var configs = {         color: {                 surface:0xFF0000         } }; var globe = new Gio.controller(container, configs);

    • 我刚开始学习抽象类。 我在一些代码测试中遇到了这个抽象的类问题。我已经被对象是如何启动的难倒了。 在抽象类中可以看到,它的构造函数只持有两个参数--和 其中一个要求是创建类。然而,正如在main(由问题提供)中所看到的,对象由启动,其中缺少和seats值。 我试图编写我的货车类,但是,我无法绕过和的参数,而不改变主类中给定的上下文。我试图在谷歌上搜索更多信息,但找不到任何答案。 有人能好心开导我一

    • 我是新的Android和Java,并试图使基于位置的应用程序。 编辑 我做了一个非常非常简单的测试代码,得到了同样的错误。这是java: 我也犯了同样的错误。以下是我的应用程序级构建中的依赖项。格雷德尔: 原帖 我试图使用ViewModel和LiveData来更新用户位置,因为我知道这是生命周期感知的最佳方式。我有一个默认的地图活动... 一个扩展LiveData以存储用户位置的类。。。 以及一个

    • 问题内容: 这些来自github上的spring amqp示例,位于https://github.com/SpringSource/spring-amqp- samples.git 这些是 什么类型的Java构造函数?它们是吸气剂和吸气剂的捷径吗? 与此相反 问题答案: 这些构造函数被重载以使用调用另一个构造函数。第一个无参数构造函数使用空参数调用第二个。第二呼叫的第三构造(未示出),其必须采取,

    • JavaScript 中的构造函数和其它语言中的构造函数是不同的。 通过 new 关键字方式调用的函数都被认为是构造函数。 在构造函数内部 - 也就是被调用的函数内 - this 指向新创建的对象 Object。 这个新创建的对象的 prototype 被指向到构造函数的 prototype。 如果被调用的函数没有显式的 return 表达式,则隐式的会返回 this 对象 - 也就是新创建的对象