Java基础复习(八)面向对象的三大特征
三. 多态
1.什么是多态
如果类之间有继承关系,可以使用父类类型的声明变量,来保存(指向)子类对象的引用,因为子类覆盖了子类的方法,当变量指向不同的子类时,调用方法会得到不同的结果,这就是多态。
2.多态性的优点
1.应用程序不必为每个派生类编写功能调用,只要对抽象基类进行处理即可;
2.派生类的功能,可以被基类的引用变量引用,这叫做向后兼容,可以提高程序的可扩充型和可维护性。
3.方法的覆盖(Override)与方法的重载(OverLoad)的异同
不同点:1.方法的重载是针对同一个类内部,方法名相同,参数列表不同,返回值不管;
2.方法的覆盖是针对继承关系,子类覆盖父类中的同名方法,方法名相同,返回值类型相同,参数列表也相同。
相同点:都是相同功能的不同实现。
4."=="与"equals"的区别
"=="是直接比较的两个对象的堆内存地址,如果相等,则说明这两个引用实际是指向同一个对象地址的。
在Object类型的equals方法是直接通过“==”来比较的, 和前一种比较一样。而被String类重写过后的equals比较的是字符串内容
5.关于final关键字
1.用final修饰的变量表示常量,只能被赋值一次,final既可以修饰成员变量,也可以修饰局部变量,形参,且被final修饰的变量必须由程序员显示地指定初始值;
2.final修饰基本类型变量,不能对该变量重新赋值,因此基本类型变量不能改变。但是,引用类型变量保存的只是引用,final只保证引用变量引用的内存地址不变,即一直引用同一个对象,但这个被引用的对象是完全可以发生改变的;
3.用final修饰的方法不能被子类的方法覆盖;
4.用final修饰的类不能被继承