为什么使用带参的构造函数创建对象,可以直接对private修饰符的成员变量进行初始化

小白白- 2020-06-27 02:35:12
public class Demo{
public static void main(String [] args){
Worker worker=new Worker(111,"张三",29);
System.out.println(worker.getId()+worker.getName()+worker.getAge());
}
}
class Worker{
private int id;
private String name;
private int age;
public void work(){
System.out.println("工作");
}
Worker(int id,String name,int age){
this.id=id;
this.age=age;
this.name=name;
}

public int getId() {
return id;
}

public String getName() {
return name;
}

public int getAge() {
return age;
}

public void setId(int id) {
this.id = id;
}

public void setName(String name) {
this.name = name;
}

public void setAge(int age) {
if(age>25) {
this.age = 25;
}else{
this.age=age;
}
}
}
...全文
2473 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复

private的私有是只能够被该类自身访问,有参构造器相当于进行了一次转接,是在private私有类中进行了成员变量的赋值,这个原理与getter(),setter()方法相同。

nunubar 2020-06-28
  • 打赏
  • 举报
回复
构造函数也是public类型的函数
Defonds 2020-06-28
  • 打赏
  • 举报
回复
封装与接口。 面向对象基本常识
sunyiz 2020-06-28
  • 打赏
  • 举报
回复
楼主对访问修饰符应该是有什么误解
并不是说 private 的变量,就无法通过外部调用修改了
而是无法“直接”访问
你不能直接 worker.id = xxx; 这样修改
但是可以通过调用public方法,worker.setId(xxx); 这样修改
你调用构造方法时,也是同理
flurriedCat 2020-06-28
  • 打赏
  • 举报
回复
引用 1 楼 maradona1984 的回复:
私有的不代表不能修改,只是决定了谁能修改. 编程就是对现实世界的映射,所以现实世界是什么样子,编程语言的设计大体也是如此,你所使用的物品正常情况下你都只能使用制造方暴露出的功能,无论手机电视机玩具电脑汽车等等.
他这问题初级的过分,,搞得我都不知道怎么回答。 我的家想怎么增加家具是我的事, 你来我家做客我允许你使用空调,电脑。但不允许你搬走我的床。。
maradona1984 2020-06-28
  • 打赏
  • 举报
回复
私有的不代表不能修改,只是决定了谁能修改. 编程就是对现实世界的映射,所以现实世界是什么样子,编程语言的设计大体也是如此,你所使用的物品正常情况下你都只能使用制造方暴露出的功能,无论手机电视机玩具电脑汽车等等.
鸡窝里的毛 2020-06-28
  • 打赏
  • 举报
回复
我反射进去,管你私不私有呢

62,628

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧