JAVA讲师刘晓涛,你讲的课不清楚的地方不少!
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 的判断,和动态灵活的意思关系还是不太大。
本人声明:虽然发此帖子,但还是非常尊重刘老师的,刘老师肯定有很多过人之处,但是讲课的话,我想最好还是把原理讲的清楚透彻,否则培养会是一大堆有些东西永远都模糊的程序员,培训阶段的学习对于程序员还是非常重要的,这时候学的东西就象一个烙印,会永远影响着一个程序员的思维的。