子类为什么能通过继承父类中的setName方法给自己设置父类中被private修饰的name属性?-灵析社区

一本正经写代码

子类为什么能通过继承父类中的setName方法给自己设置父类中被private修饰的name属性? 父类 public abstract class Employee { private String name; public String getName(){return name;} public void setName(String name) {this.name = name;} public abstract void showMsg(); } 子类 public class Manager extends Employee{ private Clerk clerk; public Manager(){} public Manager(Clerk clerk){ this.clerk=clerk; } @Override public void showMsg(){System.out.println(this.getName()); } } 测试类 下方图片是测试类,可以打印出名字.(请忽略我图片中除了name的其他属性) 下面是我的理解:private不是修饰了name吗?那Manager类中不应该没有name这个属性吗?虽然有setName方法,但是本类中没有name属性,怎么还能给name赋值上的呢? 本人小白,希望有大佬可以指点一下我理解上的错误! ![image.png](https://wmprod.oss-cn-shanghai.aliyuncs.com/c/user/20241003/d6b88559dc33d436ab951de39947a3f2.png)

阅读量:156

点赞量:0

问AI
其实你只要理解一句话就很好理解: "子类实例既是子类类型,又是父类类型" 这个子类实例没有继承自父类的private属性,这是对的,但是它自己同时又是父类类型呀,所以其实它是有这个属性的,只不过是属于父类类型的,public方法继承自父类类型就不用多说了,它调用这个方法实际上修改的是它属于父类类型这一面的私有属性