私有属性的问题

私有属性的问题

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这个属性

但是为什么可以输出呢?我觉得很困扰,我想知道不能够继承是什么意思,是单纯的不能够调用,还是什么意思,请老师解答一下

正在回答

登陆购买课程后可参与讨论,去登陆

2回答

同学,你好!关于属性的继承问题,Java中是这么设计的,同学可以当做是一种语法去记忆。虽然不能继承父类私有属性,但是当return name时,确实可以获取子类对象的name属性。

http://img1.sycdn.imooc.com//climg/5d3596660001b9b206280099.jpg

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!

吃吃吃鱼的猫 2019-07-22 17:25:06

同学你好,子类能够继承父类的属性和方法,但不能继承父类中private修饰的属性和方法。


这里能够输出的原因是:


在Test类中调用Cat的带参构造方法。

http://img1.sycdn.imooc.com//climg/5d357fc50001531404350119.jpg


在Cat的带参构造方法中,调用this.setName(),this.setMonth()方法。

显而易见,Cat类中是没有setName方法的。

http://img1.sycdn.imooc.com//climg/5d357f6e000133ed05060565.jpg


但是它继承了Animal类,我们来到Animal类中。

http://img1.sycdn.imooc.com//climg/5d357f950001076304930477.jpg

发现setName()方法是由public修饰的,所以它能够被子类继承,在Cat方法可以使用this.setName()为属性name赋值。


最后,Animal类中的getName()方法同样是public所修饰,能够被Cat继承,所以在main方法中创建Cat对象后,可以通过Cat对象调用getName()方法获取name的值。

http://img1.sycdn.imooc.com//climg/5d35803f0001b4df04630115.jpg

 

如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~

  • 提问者 慕桂英爱吃大米 #1
    还是有一点不明白,好像是有一个坎一样在cat.getName这个地方, cat对象虽然继承了getName方法,getName方法内部是return name 不过我很好奇,既然cat类中没有name属性,它怎么return呢? return的是父类对象中的那么属性吗?
    2019-07-22 18:06:25
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师