想必大家对于多态中调用那一块稍微有点不清楚,看基础视频时老师也是讲了几条,让大家一定要记住。我当时就是按照老师的说法去记但总是不太如人意,感觉看到题的时候,才在想概念与结论,好不熟练,于是自己私下里查找知识,发现有种方法,很好记忆,遂做个运输大队长,运给各位学友。有问题的欢迎大家指正。
我们知道在使用子类的构造方法创建对象时,如果我们没有认为调用父类的构造方法(super),那么虚拟机会默认调用空参数的super()方法.这样子我们可以将子类对象分为两部分(一):父类对象;(二):子类特有对象。父类对象中包含父类的成员变量,以及父类方法,《最重要的是包括子类重写父类的方法。子类重写父类的方法。子类重写父类的方法。》——重要事情说三遍。为什么这样说呢?因为我们知道重写知识改了方法体,而没有动方法声明,这就相当于房客和房子的关系,重写方法,知识换了一群房客,房子还在那里,一动不动,所以还在父类对象中。子类特有对象就包括子类的特有的成员变量和方法。只要记住这些不论如何出题也不会错了
当用父类引用来调用子类方法和变量,肯定编译错误,只有引用变量只能调用父类的变量和方法。
总结:只要知道重写方法,在父类对象中,就ok。当父类引用指向子类的对象,其实只能指向父类对象,而不能指向子类特有对象,所以父类引用变量调用子类特有的变量和方法,只能报错。
欢迎各位朋友指正。
|
|