学习java有一段时间了,觉得自己可能太心急了,不过也是由于时间紧迫,急需用到java的知识。所以在这里开个博客总结一下。
===========================================================================================================
学习多态需要掌握的知识结构:
===========================================================================================================
学习多态需要搞明白的几个问题:
Q1:什么是多态?
Q2:如何在运行期间判断对象所属的类?
Q3:抽象类与具体类的区别?
Q4:为什么要使用final的类和方法?
Q5:什么是接口?
Q6:需要学习java API的哪些通用接口?
===========================================================================================================
以上问题的回答:
A1:概念:引用对象对同一个方法做出各自的行为;
多态帮助你在处理对象时当做同一个类来处理,即继承中的父类引用子类对象,然而做出子类中定义的行为。
A2:利用instanceof关键字判断。
A3:抽象类是不被对象化的,具体类则是用来对象化的。
解释:抽象类实际上就是提供一个公共模板,里面有公共的实例变量、方法(没有实现)等,而方法的具体实现需要在具体子类中实现
A4:final的类不可继承,final的方法不可重写,final实际上表示“常量”(注:private、static这些关键字隐式表示final)
A5:接口是为多种不同的无关的类提供同一套方法。
接口的目的就是实现多态。
A6:Comparable、Serializable、Runnable、GUI event-listener interfaces、SwingConstants等。
===========================================================================================================
需要注意的细节:
1.父类引用子类的对象时,这个引用不能调用子类特有的方法,否则会引起编译错误
2.引用对象调用方法时,它能够知道去调用实际对象类的方法,而不是引用类的方法--即调用方法取决于对象运行时的类型。
3.只要类中存在抽象的方法,那么这个类必须定义为抽象类。
4.构造函数和static的变量或方法是不能被抽象化的,因为构造函数不能被继承,static的函数不可重写。也就是抽象没有意义
5.抽象方法必须在具体继承类中实现,否则编译错误。
6.接口中的实例变量是final、static、public的,方法是public、abstract的。
7.一个类接上接口,要么实现接口中的所有方法(因为接口中的方法都是抽象的)成为具体类,要么成为抽象类。
8.接口可以调用的方法范围有三个:自身声明、上级接口、Object类,而且通过对象来调用。