今天看到这个帖子
http://topic.csdn.net/u/20091025/11/f72e8572-7f85-4922-9f8e-3d3cbd158df7.html?71697
里面楼主说看书上有一句话
继承是一种机制,让一个类能够继承其超类的所有行为和属性.
然后我看回复都是说这句话错误,说private不能被继承
而我认为首先要明确继承的是什么?
继承的是代码吗?以前我也是这样认为,不过现在我认为继承的应该是类型
因为你不能让一个开车继承一个animal,虽然代码上可行
所以说继承的是类型
这样考虑,那么基类中除了构造方法以外,所有的属性和行为都被子类继承,显然那篇贴子上的哪句话没有错
只是因为访问修饰符,隐藏,覆盖等原因,无法访问父类中的一些方法和属性
大家考论一下

解决方案 »

  1.   

    继承 从人认识事物的理解来看,一般是继承妈妈,爸爸或爷爷奶奶 的属性,行为或其他但是sun不这么认为。。sun认为 object是上帝,是女娲,他(她)创造了一切。无论怎么样,你最终从 object继承。所以我觉得这个 类型 有些 不太 确定, 应该是某些共性的东西。
      

  2.   

    把同有的属性和方法抽象到一个类里..由你的子类去继承他.就可以分享这些同有的属性和方法.还有一个叫接口,和这个很类似
    PS:java是单继承机制
      

  3.   

    个人认为那句话是正确的,private 属性只是不可访问。
      

  4.   

    java里所有的类都是Object类型,这地方很自然
    你说共性,小鸟和飞机都能飞,你能让小鸟继承飞机吗,显然不能简单的集成代码
      

  5.   

    对的,这话没有错.Object其实就是相当于最高的根节点,就好比我们都是华夏儿女一样,同时我们还有爸爸,而爸爸也是华夏儿女.
    所以我们是爸爸的子类,而不是其他人爸爸的子类.不过私有变量和构造函数不可以被子类继承,这也是规范罢了.继承的概念是不拘泥于语言的
      

  6.   

    很经常看到有人说private不能被继承,
    举个简单的例子父类中get方法返回一个私有属性,子类中调用这个方法不能得到返回值吗?
    为什么都说private不能被继承呢...
      

  7.   

    讨论这, 不如看一遍C++ ...C++是最全面最鼻祖的面向对象... Java是C++的精简版
      

  8.   

    看下java与模式里对于继承的阐述吧
      

  9.   

    继承的是全部。除非父类声明这是他自有的(private)或者子类声明这是我独有的(rewrite)。
    关于private能不能继承的问题,就好比你不知道一个园子里有什么,你看不见,但是有一个工具,你放进去,再拿出来就有一个橘子。你继承了橘子了么?没有,你只是继承了那个工具。东西还是在父类那里。不是你自己的。以后再也不要说private可以继承的问题,所有在class内不能用this.xx或者this.xx(args[])的都是没有继承下来的。
      

  10.   

    再说一句,机器语言、行为和社会的语言、行为 到目前为止无法映射。
    再说了,继承是不能继承2个的,你们上面哪个比喻父母的,难道你们学的java比我学的多?你们可以继承2个实体?关于私有的话,我想比喻最恰当的还是,我们社会主义社会,土地都是集体或者国家的。农民有土地使用权,但是没有所有权。这是国家赋予你的权利,相当于,从父类那里继承的工具,有使用权,没所有权。这东西不是你的,只是你能用而已。你这个是社会主义社会和资本主义社会的区别。你要是资本主义社会的学生,你不懂无可厚非。但是,你在社会主义也不懂的话,是该怀疑下我们的教育了。
      

  11.   

    【转】
    继承是指一种代码重用的形式,允许程序员基于现有类开发新类。现有类通常称为基类 或超类,新类通常称为子类。继承的主要优势是,允许重复使用基类中的代码,但不修改现有代码。此外,继承不要求改变其它类与基类交互的方式。不必修改可能已经过彻底测试或可能已被使用的现有类,使用继承可将该类视为一个集成模块,可使用其它属性或方法对它进行扩展。因此,您使用 extends 关键字指明类从另一类继承。通过继承还可以在代码中利用多态。有一种方法在应用于不同数据类型时会有不同行为,多态就是对这样的方法应用一个方法名的能力。名为 Shape 的基类就是一个简单的示例,该类有名为 Circle 和 Square 的两个子类。Shape 类定义了名为 area() 的方法,该方法返回形状的面积。如果已实现多态,则可以对 Circle 和 Square 类型的对象调用 area() 方法,然后执行正确的计算。使用继承能实现多态,实现的方式是允许子类继承和重新定义或覆盖 基类中的方法。
      

  12.   

    我感觉喜欢看《Thinking in Java》的人,很喜欢讨论这种问题