多态:
多态是指程序中定义的引用变量所指向的具体类型和通过该引用变量发出的方法调用在编程时并不确定,而是在程序运行期间才能确定,即一个引用变量到底会指向哪个类的实例对象,该引用变量发出的方法调用到底是那个类中实现方法的,必须在程序运行期间才能决定。
实现:声明成父类类型,指向不同的子类对象,能实现不同的重写方法
这就是多态,那这句话什么意思呢我们通过一个例子介绍
如上图是加减乘除的实现:
父类定义两个 num 和一个geResult()方法,此方法并没有具体实现
public int getResult() {
return 0;
}
加减乘除四个子类继承父类Cal并重写geResult()方法
如在类Add中:
@Override
public int getResult() {
return num1 + num2;
}
接下来在调用函数中,声明成子类类型,new 子类对象调用getResult()方法
如果子类重写了getResult()方法,调用的就是子类中的方法
如果没有重写,调用的就是父类中的方法
Add add = new Add(3, 5);
int result = add.getResult();
System.out.println(result);// 8
Sub sub = new Sub(3, 5);
int result1 = sub.getResult();
System.out.println(result1);// -2
而声明成父类类型,new 子类对象调用getResult()方法
如果子类重写了getResult()方法,调用的就是子类中的方法
如果没有重写,调用的就是父类中的方法
Cal cal = new Add(3, 2);
int result2 = cal.getResult();
System.out.println(result2);// 5
cal = new Sub(3, 2);
int result3 = cal.getResult();
System.out.println(result3);// 1
这样就实现了多态
多态:声明成父类类型,指向不同的子类对象,能实现不同的重写方法
多态存在的三个条件:
1.继承
2.重写