面向对象之多态(Java)
面向对象是Java学习中最基础,也是最重要的一部分,其中它的三大特征包括:
今天让我们一起来学习面向对象的三个特征的最后一大特征-- 多态 吧!
何为多态
把子类的实例化对象赋值给父类的引用类型
- 继承 Fu f=new Zi(); Pet p=new Dog(); Pet p=new Penguin();
- 重写 f.a();
多态 = 继承 + 重写
多态的接地气的理解:父类作为形参,子类类型作为实参。
多态的实现
- 通过案例学习吧!
public class Fu {
public void a(){
System.out.println("父类的实例方法!");
}
public static void b(){
System.out.println("父类的静态方法!");
}
}
public class Zi extends Fu{
public void a(){
System.out.println("子类的实例方法!");
}
public static void b(){
System.out.println("子类的静态方法!");
}
}
public class Test {
public static void main(String[] args) {
//测试父类
Fu f1 = new Fu();
f1.a();
f1.b();
System.out.println("===================");
//测试子类
Zi z1 = new Zi();
z1.a();
z1.b();
System.out.println("===================");
//测试多态
Fu zi = new Zi();
zi.a();
zi.b(); //静态不能被覆盖
}
}
运行结果:
我们可以看到,在多态中,子类的实例方法会覆盖父类的实例方法,但是静态方法无法被覆盖,所以调用b(),输出的是父类的静态方法。