A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© ★Joean_Zhou 中级黑马   /  2014-5-31 22:07  /  1373 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

虽然三大特性不是很深但是我有个小小的问题,那就是
不如A是
{int  _age;
int  _num;
}

B是
{
nt  _age;
int  _num;
int _weight;
}
为什么是B继承A而不是A继承B呢?明明B中属性多一点啊

评分

参与人数 1技术分 +1 收起 理由
傘が咲く + 1

查看全部评分

8 个回复

倒序浏览
继承的关系就是子类拥有的方法和成员变量和父类相等或者多于父类
回复 使用道具 举报
既然是继承,子类就拥有父类的全部!而且子类还可以继续扩充!但是父类如果扩充,子类也会拥有。所以说子类里面的成员变量和方法必大于或者等于父类!所以说上题就是B继承A
回复 使用道具 举报
既然是继承,继承过来后属性只能多不能少啊,楼主需要好好理解下,别晕了
回复 使用道具 举报
先跟你说下继承的道理吧- -
B继承A  就要有A的全部属性
比如 矩形跟正方形
矩形的属性是平行  垂直
正方形的属性是 平行 垂直 边相等

如果 按你的说法: 矩形继承自正方形 那么 矩形就成了有平行 垂直 边相等特性的四边形
那么 相邻边 不相等的 矩形怎么办?  是不是无法成立

继承你要注意一个方法 :  提取两个类中相同的部分  封装成一个基类
就好比 正方形 矩形  你要 提取平行 垂直这两个部分 作为基类
当然 这里是以矩形为基类 因为这个例子中矩形跟基类是一样的

可否明白了?

评分

参与人数 1技术分 +1 收起 理由
傘が咲く + 1

查看全部评分

回复 使用道具 举报

虽然三大特性不是很深但是我有个小小的问题,那就是
不如A是
{int  _age;
int  _num;
}

B是
{
nt  _age;
int  _num;
int _weight;
}
为什么是B继承A而不是A继承B呢?明明B中属性多一点啊

先明白继承什么作用继承用处一是,抽取重复代码。二是,建立两个类的联系,三是,在原来的基础上,扩充方法。
使用场合:1,当两个类拥有相同的属性和方法时,就可以将相同的东西抽取到一个父类中。
2,当A类拥有B类的部分属性和方法时。可以让B类继承A类。。
而你的代码,就是第二个,因为B类中拥有A类的所有属性,所以可以写成这样
不如A是
{int  _age;
int  _num;
}

B是
{
int _weight;
}

让B类继承A,就相当于这样写了
B是
{
nt  _age;
int  _num;
int _weight;
}
回复 使用道具 举报
继承就是拥有父类的全部属性和方法
回复 使用道具 举报
继承是子类向上抽取而来的,比如说猫和狗抽取成动物,如果是动物继承猫类,那就不符合常理了,不是所有动物都会抓老鼠是吧,所以说子类的属性必须是等与父类,或者比父类多的
回复 使用道具 举报
继承,就是要保留父本的全部,并且可以发扬光大,因此子拥有父的全部甚至比父多。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马