当前位置: 代码迷 >> Java相关 >> 关于继承不太懂
  详细解决方案

关于继承不太懂

热度:303   发布时间:2007-03-24 19:14:50.0
class first
{
void fn()
{
System.out.println("first::fn");
}
first()
{
fn();
}
}
class second extends first
{
void fn()
{
System.out.println("second::fn");
}
second()
{
}
}
class text
{
public static void main(String[] args)
{
first x=new second();
}
}
put out
second::fn

[此贴子已经被作者于2007-3-24 19:17:40编辑过]


----------------解决方案--------------------------------------------------------

如你所说,如果没有父类这个概念
那么为什么会调用second的函数呢
如果是面向过程思想的话 应该是FIRST的
毕竟C等 都是编译时语言,调用什么函数完全看调用者
(FN那里的THIS应该是FIRST,对吧)

当然,是因为动态绑定,但当你承认这一点时
你就已经默认的承认了面向对象的思想
因为,只有当你这个是一个对象时,才涉及到
动态考虑调用者的实际类型
那么在你心理时刻提醒自己没有‘子类中包含父类’的概念
的前提下,告诉我为什么调用的是SECOND的FN
而不是FIRST的FN
并且告诉我,为什么两个FN 可以同时存在
(我没听说过,重载有靠方法内容重载的)

-----------------------------------------------------
可能你认为我夺理
那我们换从 接口 方面来说
一个最为明显的例子

如果没有 ‘子类中包含父类’的概念
那么void fn(first){}
fn(second)
又是怎么实现的呢?
不会说因为里面有所有需要的函数 就可以的吧
那么请问我再做一个CLASS OOO
让他的内容与FIRST一模一样
那么你说FN(OOO)可以么??
不用‘子类中包含父类’的概念
你怎么解释呢??
这根本就是面向对象思想

----------------------------------------------
我们再从关键字来说

如果没有’子类中包含父类’的概念
那么为什么基类的private成员不可见
就在这个子类域内,为什么就不可以访问
(子类中包含父类’的概念很好解释,书上也说的很明白)

而不仅仅是
spuer调用一个方法那样
完全用方法解释这么多



----------------解决方案--------------------------------------------------------
以下是引用神vLinux飘飘在2007-3-22 0:05:45的发言:
稀里哗啦 更不是你所形容我的这样


神族狂热者
(应该是这个名)
也许你可以说我不对
因为这是我的观念
不是你的

但是不至于这么评价

----------------解决方案--------------------------------------------------------
go to WAR3
please write UR viewpoint
----------------解决方案--------------------------------------------------------
shit, "稀里哗啦" means nothing!!!! I said I can't read any message from your lastest answer.
Not your thought!

----------------解决方案--------------------------------------------------------
One Question :

ClassB extends Object

ClassA extends ClassB


Question: how many Object will be created in "new ClassA();" ?

[此贴子已经被作者于2007-3-24 20:08:11编辑过]


----------------解决方案--------------------------------------------------------
如果算 Object
是3个
不算是2个
----------------解决方案--------------------------------------------------------

很有意思! 等呆讨论结果!


----------------解决方案--------------------------------------------------------
刚上来,就看到这么精彩
,我也对继承迷惑,希望能看到结果
----------------解决方案--------------------------------------------------------
根据我的理解和测试,应该是子类里面不会包含父类的对象,而是扩展了父类

如果你们有NB的话,可以查看一下,运行你们的程序的时候,最后生成了多少对象


----------------解决方案--------------------------------------------------------
  相关解决方案