JAVA讲师刘晓涛,你讲的课不清楚的地方不少!

leveretzhang 2006-10-29 01:17:33
chinaitlab上的JAVA内容差不多都是刘晓涛老师讲的,今天晚上我只听了他的一节课,感觉上好象讲解的误差不少,我不会JAVA,但是学习过 C#,听的是李建忠的课,讲的非常的好。

我不是想评述两位老师,听了刘晓涛的课,感觉讲的非常的模糊,在概念上有一些误差的地方,会让听课者产生很多误解。我只听了20分钟的抽象类与接口。感觉有如下问题:

1、关于继承的部分刘老师是这样说的,Father f=new son(); 他说的是父类更广泛,可以把子类对象的变量赋一个父类对象变量。也可以这样说,但是我觉得很模糊,让人弄不清楚。

实际上应该说前边是声明类型,后边是实际类型,而不是赋值的概念,这里边还是与区别的,主要是在编译时和运行时系统认识到的对象是不一样的,编译时系统只知道对象的声明类型,运行时才依据实际类型来调用。声明类型是没有内存的,这里用赋值等于的概念就不对了。


2、再往下讲的是关于对象引用问题的,其实和上边的问题也差不多,原题型是这样的
if (x>0)
{
Father f=new son();//继承Father
}
else
{
Father f=new son2();//继承Father
}
f.method

刘老师讲的是 “里氏代换原则” 来解释上边的父类会调用哪个子类的方法,说的是这样具有动态的灵活性,我觉得这样说还是有问题的,应该说是栈上的指针会直接指到哪个子类堆内存上去吧?或者说创建了哪个子类的实例,所谓动态只是加了一个 if else 的判断,和动态灵活的意思关系还是不太大。

本人声明:虽然发此帖子,但还是非常尊重刘老师的,刘老师肯定有很多过人之处,但是讲课的话,我想最好还是把原理讲的清楚透彻,否则培养会是一大堆有些东西永远都模糊的程序员,培训阶段的学习对于程序员还是非常重要的,这时候学的东西就象一个烙印,会永远影响着一个程序员的思维的。
...全文
358 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
dashi 2006-10-29
  • 打赏
  • 举报
回复
up~~~
iambic 2006-10-29
  • 打赏
  • 举报
回复
你的本意或许是对的,但是所谓栈上有一个指针,本来就是分配的空间。或许在你眼中只有堆分配才算是分配,但别人并不都是这样想的,当别人不这样想的时候,可能就会觉得你讲的不清楚。
leveretzhang 2006-10-29
  • 打赏
  • 举报
回复
本人水平有限,说的不专业的地方请多指教。

声明一个类型的时候是没有内存分配的,只有一个空的指针,说的明白一点是没有堆内存分配,在栈上有一个指针,但没有具体的对象调用。
比如 Father f;
这应该是没有任何具体的对象调用吧,只是有一个占位符,说的不对的地方还请专家指教
book2friend 2006-10-29
  • 打赏
  • 举报
回复
朋友,你有刘老师的视频呀,,
卖不卖的?
到我网站:www.book2friend.com上发个出售贴,
如果合适的话,我买一套,或者交换资料。
iambic 2006-10-29
  • 打赏
  • 举报
回复
“声明类型是没有内存的,这里用赋值等于的概念就不对了。”
你这句讲得也很不清楚。声明类型是声明了一个引用,引用显然是有内存的。

“所谓动态只是加了一个 if else 的判断,和动态灵活的意思关系还是不太大。”
动态指的是后一句:
f.method;
leveretzhang 2006-10-29
  • 打赏
  • 举报
回复
有说的不对的地方,欢迎多多指教批评!

23,404

社区成员

发帖
与我相关
我的任务
社区描述
Java 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧