【问题标题】:Parametric constructor, what is the difference?参数构造函数,有什么区别?
【发布时间】:2020-08-26 04:52:06
【问题描述】:

我目前正在审查创建构造函数的一般(两种)方法,包括默认的和参数化的,我想问一下这两个示例之间有什么区别。

示例 A:

public class dog {

    private String dogName;

    public dog() {
        dogName = "Toby";
    }

    public String getDogName() {
        return dogName;
     }

    public static void main(String args[]) {
        Dog object = new Dog();
        System.out.println(object.getDogName());
    }
}

示例 B:

public class dog {

    private String dogName;
    public dog (String dogName) {
        this.dogName = dogName;
    }

    public static void main(String args[]) {
        Dog object = new Dog();
        System.out.println(object.getDogName());
    }

    public static void main (String[] args) { 
        Dog object = new Dog("Toby"); 
        System.out.println(object.dogName); 
    } 
}

【问题讨论】:

  • 您可以动态构造Dog实例,名称在第二个。
  • @Rono 这超出了我的理解,你有什么“动态构造”的例子吗?
  • 第二个为您提供了更大的灵活性,您可以创建不同的 Dog 实例并给它们不同的名称,而第一个是创建名为 Toby 的不同 Dog 实例。
  • 示例 A - 所有的狗都被命名为 Toby。示例 B - 狗得到了给它们的名字。参数构造器意味着您可以在构造时自定义一些字段。 Dog dog = new Dog("Toby"); 创建对象后需要自定义默认构造函数 Dog dog = new Dog(); dog.Name="Toby";

标签: java parameters constructor


【解决方案1】:

示例 A:

public Dog() {
    dogName = "Toby";
}

您在此处对“Toby”进行硬编码。因此,每次您将实例化类型为 Dog 的对象时,dogName 将被初始化为“Toby”,作为 默认 值,因为您无法通过在对象实例化期间使用new 关键字动态地获取数据。


示例 B:

public Dog(String dogName) {
    this.dogName = dogName;
}

每次创建 Dog 类型的对象时,您都会动态地传递值。每次你这样做时,dogName 都会被初始化为你传入的任何东西,作为参数,传入构造函数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-30
    • 1970-01-01
    • 2011-10-23
    • 2015-12-17
    • 2011-10-17
    相关资源
    最近更新 更多