知识点
继承、多态
继承与多态都是面向对象的三大特征之一
学习Java面向对象中的三大特征时候其实是很抽象的,面向对象三大特征中有很多的知识点,其实有很多都是需要死记的东西,但如果有一个简单的方法就会事半功倍。
继承
继承的作用就是重用,使其后期将相同的代码和为一块
多态
同一行为,通过不同的子类,可以体现出来的不同的形态
发现问题
我学习此处的难处在于这个继承在内存里是怎么分配的,之前我一直以为子类在创建对象的时候,内存的堆中会有两个空间,一个是父类的,一个是子类的,毕竟子类可以使用父类的方法和变量就感觉是创建了两个空间。
解决问题
当发现这个问题后,我是首先使用debug将整个程序的运行路线走了一遍,从中发现执行到了子类创建对象的时候,最先执行的其实是父类的构造方法,然后才是子类的构造方法,但他毕竟走了父类我就以为是创建了父类的对象,但答案还是不太明确,首先是上网搜索了一下创建子类对象时是否创建了父类的对象,搜出来后的结果与我想的不同但好多答案都很模糊,之后就去问了老师后,经了解发现继承在内存中的分配是在类加载的时候执行子类的创建对象先是去执行了父类的构造函数,只是执行了构造函数并没有创建对象,调用函数方法并不代表会创建父类对象,内存中所分配的是子类对象与父类中的方法都在一个空间,只有一个子类对象一块堆空间。瞬间领悟,哈哈哈。
其实此处理解并不难只需要画一个内存分配图即可非常顺畅的理解
学习难点
上午学习的继承,下午学习的多态。相比较对我而言学多态的时候会比较抽象,上午学继承的时候感觉还理解的挺清晰的,但多态的会比较模糊了,云里雾里…哈哈哈,没办法感觉多态有点乱。
思考-克服
仔细看看笔记,虽然你会敲代码,但能理解代码的意思才是重要的,多态无非就是建立在继承上面的,没有继承哪来的多态,而且多态的优点就是减少修改原始代码的前提下提高扩展性,难懂的上下转型,我是将其理解为变量类型的转换,仔细看代码你就会发现多态的转型与变量的类型转换有很多相似的,当你遇到难点的时候就不要一直敲代码了,因为你连意思都不懂就敲代码只会练习打字速度并不能帮你理解代码。
当我遇到不会的时候一般先走一下debug看一下那里出问题了或者看一下他的运行路线,然后再思考问题,还是不行就上网搜索,最后再问老师。如果一开始就咨询老师,其实记忆并不深刻,当你仔细琢磨一个难题时,自己解出来的记忆才是最深的。
学习思路
今天的学习思路还是比较清晰的,遇到那题自己先解决(无知到模糊),对答案比较模糊的时候再咨询老师(模糊到清晰)
每日收获
今天让我一点就透的其实就是图,从一个图的流程以及分区直接导致我对以上的难题有一个清晰的思路。