Java Setter和Constructor混淆
发布时间:2020-12-15 05:17:32 所属栏目:Java 来源:网络整理
导读:我对如何在 Java中使用构造函数和setter感到困惑,请参阅下面的示例代码: public class Name { private String name; public void setName(String name){ this.name=name; } public String getName(){ return name; }}public static void main(String[] args
我对如何在
Java中使用构造函数和setter感到困惑,请参阅下面的示例代码:
public class Name { private String name; public void setName(String name){ this.name=name; } public String getName(){ return name; } } public static void main(String[] args) { Name a=new Name(); a.setName("123"); System.out.println(a.getName()); } 它打印出123,它使用没有构造函数的setter方法,我还编写了下面的其他代码: public class Name { private String name; public Name(String nm){ name=nm; } public String getName(){ return name; } } public static void main(String[] args) { Name a=new Name("123"); System.out.println(a.getName()); } 这个也打印出123,它是使用没有setter方法的构造函数,这就是为什么我不明白构造函数和setter之间使用的区别,请指教,欢呼! 解决方法
如果要更改实例的名称值,该怎么办?当然,你不会使用构造函数,因为它会创建一个新实例.在这种情况下你会使用一个setter.
当然,如果你正在编写一个不可变类,那么你就不会给任何setter.实例字段中的任何修改都将创建一个新实例. 这里要理解的另一个重点是,由于您在第二个代码中提供了参数化构造函数,因此编译器不会添加任何默认构造函数.所以,第二类实际上没有任何0-arg构造函数.如果您想稍后使用它,那么您必须明确添加一个. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- java – Spring-security甚至在提交表单之前显示“Bad Cred
- java – Spring无法配置授权服务器
- java字符串反转示例分享
- java – 带有extends和super作为参数的无界通配符
- 在Java中,如何使用ServiceLoader模拟加载的服务?
- java – 在Vaadin 7中调用VaadinSession getAttribute时需要
- Java实例:超类型和子类型似乎相等?如何准确测试Type?
- java – 为什么它总是调用父类方法“doTest(double d)”?
- 使用java自带加密算法实现文本的md5加密算法
- 如何为RestController启用GZIP?