今天看到这个帖子
http://topic.csdn.net/u/20091025/11/f72e8572-7f85-4922-9f8e-3d3cbd158df7.html?71697
里面楼主说看书上有一句话
继承是一种机制,让一个类能够继承其超类的所有行为和属性.
然后我看回复都是说这句话错误,说private不能被继承
而我认为首先要明确继承的是什么?
继承的是代码吗?以前我也是这样认为,不过现在我认为继承的应该是类型
因为你不能让一个开车继承一个animal,虽然代码上可行
所以说继承的是类型
这样考虑,那么基类中除了构造方法以外,所有的属性和行为都被子类继承,显然那篇贴子上的哪句话没有错
只是因为访问修饰符,隐藏,覆盖等原因,无法访问父类中的一些方法和属性
大家考论一下
http://topic.csdn.net/u/20091025/11/f72e8572-7f85-4922-9f8e-3d3cbd158df7.html?71697
里面楼主说看书上有一句话
继承是一种机制,让一个类能够继承其超类的所有行为和属性.
然后我看回复都是说这句话错误,说private不能被继承
而我认为首先要明确继承的是什么?
继承的是代码吗?以前我也是这样认为,不过现在我认为继承的应该是类型
因为你不能让一个开车继承一个animal,虽然代码上可行
所以说继承的是类型
这样考虑,那么基类中除了构造方法以外,所有的属性和行为都被子类继承,显然那篇贴子上的哪句话没有错
只是因为访问修饰符,隐藏,覆盖等原因,无法访问父类中的一些方法和属性
大家考论一下
PS:java是单继承机制
你说共性,小鸟和飞机都能飞,你能让小鸟继承飞机吗,显然不能简单的集成代码
所以我们是爸爸的子类,而不是其他人爸爸的子类.不过私有变量和构造函数不可以被子类继承,这也是规范罢了.继承的概念是不拘泥于语言的
举个简单的例子父类中get方法返回一个私有属性,子类中调用这个方法不能得到返回值吗?
为什么都说private不能被继承呢...
关于private能不能继承的问题,就好比你不知道一个园子里有什么,你看不见,但是有一个工具,你放进去,再拿出来就有一个橘子。你继承了橘子了么?没有,你只是继承了那个工具。东西还是在父类那里。不是你自己的。以后再也不要说private可以继承的问题,所有在class内不能用this.xx或者this.xx(args[])的都是没有继承下来的。
再说了,继承是不能继承2个的,你们上面哪个比喻父母的,难道你们学的java比我学的多?你们可以继承2个实体?关于私有的话,我想比喻最恰当的还是,我们社会主义社会,土地都是集体或者国家的。农民有土地使用权,但是没有所有权。这是国家赋予你的权利,相当于,从父类那里继承的工具,有使用权,没所有权。这东西不是你的,只是你能用而已。你这个是社会主义社会和资本主义社会的区别。你要是资本主义社会的学生,你不懂无可厚非。但是,你在社会主义也不懂的话,是该怀疑下我们的教育了。
继承是指一种代码重用的形式,允许程序员基于现有类开发新类。现有类通常称为基类 或超类,新类通常称为子类。继承的主要优势是,允许重复使用基类中的代码,但不修改现有代码。此外,继承不要求改变其它类与基类交互的方式。不必修改可能已经过彻底测试或可能已被使用的现有类,使用继承可将该类视为一个集成模块,可使用其它属性或方法对它进行扩展。因此,您使用 extends 关键字指明类从另一类继承。通过继承还可以在代码中利用多态。有一种方法在应用于不同数据类型时会有不同行为,多态就是对这样的方法应用一个方法名的能力。名为 Shape 的基类就是一个简单的示例,该类有名为 Circle 和 Square 的两个子类。Shape 类定义了名为 area() 的方法,该方法返回形状的面积。如果已实现多态,则可以对 Circle 和 Square 类型的对象调用 area() 方法,然后执行正确的计算。使用继承能实现多态,实现的方式是允许子类继承和重新定义或覆盖 基类中的方法。