多态
同一操作作用于不同的对象,可产生不同的效果,即多态;
概念:多态是同一个行为具有多个不同表现形式或形态的能力;多态性是对象多种表现形式的体现
存在的三个必要条件
1、继承
2、重写
3、父类引用指向子类对象
当使用多态方式调用方法时,先检查父类中是否存在该方法,若没有则编译错误;有则去调用子类的同名方法;
多态的好处
1、不必为每一个派生类编写功能调用,只需对抽象类进行处理,可提高程序的可复用性
2、派生类的功能可被基类的方法或引用变量所调用,称为向后兼容,可提高可扩充性和可维护性
扩展:
虚函数
虚函数的存在是为了多态
Java并没有虚函数的概念,它的普通函数相当于 C++ 的虚函数,动态绑定是 Java 的默认行为。如果 Java 中不希望某个函数具有虚函数特性,可加上 final 关键字非虚函数
访问权限修饰符
权限 | 作用 |
---|---|
private | 只能在定义他们的类中使用,在其它类中不能调用 |
default | 默认权限即同包权限,同包权限的元素只能在定义它们的类中,以及同包的类中被调用 |
protected | 能在定义它们的类中,同包的类中被调用;如果不同包的类想调用它们,则这个类必须是定义它们的类的子类 |
public | 可在任何一个类中被调用,不管同包或不同包,是权限修饰最大的一个修饰符 |
public | protected | default | private | |
---|---|---|---|---|
本类 | √ | √ | √ | √ |
同包子类 | √ | √ | √ | |
同包非子类 | √ | √ | √ | |
不同包子类 | √ | √ | ||
不同包且非子类 | √ |