Java 多态
Java基础-012-Java 继承中已经讲到“多态”。
1、覆写(Override)、重载(Overload)
- 覆写(Override):在继承中,子类定义了一个与父类
方法名
完全相同的方法,返回类型
和参数
都相同。(加上@Override
可以让编译器帮助检查是否进行了正确的覆写,但不是必需的。) - 重载(Overload):在同一个类里面,
方法名
相同,而参数不同
。返回类型
可以相同也可以不同。 注意:方法名相同,方法参数相同,但方法返回值不同,也是不同的方法。在Java程序中,出现这种情况,编译器会报错。
2、多态
了解上面覆写(Override)、重载(Overload),这里另外描述多态:
- 多态是指,针对某个类型的方法调用,其真正执行的方法取决于运行时期实际类型的方法。
- 多态是同一个行为具有多个不同表现形式或形态的能力。
- 多态就是同一个接口,使用不同的实例而执行不同操作。
这里网上查看了很多,总结多态就是同一个东西
,运行出来不同动作
。如继承同一个对象,并覆写(Override)同一方法,所以多个对象可转化成父类,通过父类使用同一方法表现不同。
public class Main {
public static void main(String[] args) {
Man man1 = new Man("fuxi", 18);
Woman woman1 = new Woman("nvwa", 18);
man1.action();
man1.action("打球");
woman1.action();
woman1.action("化妆");
System.out.println();
Person person1 = man1;
Person person2 = woman1;
//Woman woman2 = (Woman) person1;
person1.action();
person2.action();
}
}
多态存在的三个必要条件
- 继承
- 覆写(Override)
- 父类引用指向子类对象:
Person person1 = man1;
多态的实现方式
- 覆写(Override)
- 接口:就是一些方法特征的集合,但没有方法的实现。
- 抽象类和抽象方法
其实都需要覆写(Override),下面两种特殊列出