黑马程序员技术交流社区

标题: 三大特性问题,求解决 [打印本页]

作者: ★Joean_Zhou    时间: 2014-5-31 22:07
标题: 三大特性问题,求解决
虽然三大特性不是很深但是我有个小小的问题,那就是
不如A是
{int  _age;
int  _num;
}

B是
{
nt  _age;
int  _num;
int _weight;
}
为什么是B继承A而不是A继承B呢?明明B中属性多一点啊
作者: pk49800    时间: 2014-6-1 00:12
继承的关系就是子类拥有的方法和成员变量和父类相等或者多于父类
作者: Guardian_Angel    时间: 2014-6-1 01:13
既然是继承,子类就拥有父类的全部!而且子类还可以继续扩充!但是父类如果扩充,子类也会拥有。所以说子类里面的成员变量和方法必大于或者等于父类!所以说上题就是B继承A
作者: tony_ygz    时间: 2014-6-1 08:24
既然是继承,继承过来后属性只能多不能少啊,楼主需要好好理解下,别晕了
作者: 夏沫的黄昏′    时间: 2014-6-1 11:27
先跟你说下继承的道理吧- -
B继承A  就要有A的全部属性
比如 矩形跟正方形
矩形的属性是平行  垂直
正方形的属性是 平行 垂直 边相等

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

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

可否明白了?
作者: 杨晓斌    时间: 2014-6-1 18:58

虽然三大特性不是很深但是我有个小小的问题,那就是
不如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;
}
作者: yangying514    时间: 2014-6-1 21:16
继承就是拥有父类的全部属性和方法
作者: ⒈心只霸占沵    时间: 2014-6-1 23:03
继承是子类向上抽取而来的,比如说猫和狗抽取成动物,如果是动物继承猫类,那就不符合常理了,不是所有动物都会抓老鼠是吧,所以说子类的属性必须是等与父类,或者比父类多的
作者: 54hxd52lj    时间: 2014-6-2 10:52
继承,就是要保留父本的全部,并且可以发扬光大,因此子拥有父的全部甚至比父多。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2