私有属性的问题
public class Animal { private String name; //无参构造方法 public Animal() { } //多参构造方法 public Animal(String name) { this.setName(name); } public String getName() { return name; } public void setName(String name) { this.name = name; } } ============================================================ public class Cat extends Animal { private int month; // 无参构造方法 public Cat() { } // 多参构造方法 public Cat(String name, int month) { this.setName(name); this.setMonth(month); } public int getMonth() { return month; } public void setMonth(int month) { this.month = month; } } =========================================================== public class Test { public static void main(String[] args) { Cat cat=new Cat("小花",2); System.out.println("它叫" + cat.getName()); } }
老师之前说,父类的私有属性不能够被继承,但是cat对象为什么可以输出名字呢?它没有name这个属性
但是为什么可以输出呢?我觉得很困扰,我想知道不能够继承是什么意思,是单纯的不能够调用,还是什么意思,请老师解答一下
5
收起
正在回答
2回答
同学,你好!关于属性的继承问题,Java中是这么设计的,同学可以当做是一种语法去记忆。虽然不能继承父类私有属性,但是当return name时,确实可以获取子类对象的name属性。
如果我的回答解决了你的疑惑,请采纳!祝学习愉快!
吃吃吃鱼的猫
2019-07-22 17:25:06
同学你好,子类能够继承父类的属性和方法,但不能继承父类中private修饰的属性和方法。
这里能够输出的原因是:
在Test类中调用Cat的带参构造方法。
在Cat的带参构造方法中,调用this.setName(),this.setMonth()方法。
显而易见,Cat类中是没有setName方法的。
但是它继承了Animal类,我们来到Animal类中。
发现setName()方法是由public修饰的,所以它能够被子类继承,在Cat方法可以使用this.setName()为属性name赋值。
最后,Animal类中的getName()方法同样是public所修饰,能够被Cat继承,所以在main方法中创建Cat对象后,可以通过Cat对象调用getName()方法获取name的值。
如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~
1. Java 零基础入门
- 参与学习 人
- 提交作业 3802 份
- 解答问题 11489 个
本阶段带你迈入Java世界,学习Java必备基础知识,基础语法、面向对象思想以及常用工具类的使用。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星