一、多态的定义
二、多态的作用
三、多态的种类
1)方法的重载和覆写
2)对象的多态性
Java中对象的多态
对象的多态性表现在两个方面:
1) 向上转型
2) 向上转型
例子:
package com.wnl.plo;
class A {
public void fun1() {
System.out.println("我是父类的fun1()方法");
}
public void fun2() {
System.out.println("我是父类的fun2()方法");
}
}
class B extends A {
@Override
public void fun1() {
// TODO Auto-generated method stub
System.out.println("我是子类的fun1()方法");
}
@Override
public void fun2() {
// TODO Auto-generated method stub
super.fun2();
System.out.println("我是子类的fun2()方法");
}
public void fun3(){
System.out.println("我是子类特有的方法");
}
}
public class PolDemo01 {
public static void main(String[] args) {
System.out.println("=====================向上转型");
/**
* 1 向上转型:父类对象使用子类实例【程序自动完成】
* 1) 父类对象只能调用被子类重写或覆写的方法,
* 如果子类没有重写或覆写,则调用父类方法
*/
A a=new B();//父类 父类对象-->子类 子类实例
a.fun1();//调用子类覆盖的方法
a.fun2();;//调用子类覆盖的方法
System.out.println("=====================向下转型");
/**
* 2 向下转型: 子类 子类对象-->父类 父类实例 必须指明子类类型
* 1)在向下转型时,必须先做向上转型,不然会出现对象转换异常
*/
A a1=new B();
B b=(B) a1;
b.fun1();
b.fun2();
b.fun3();
}
}
输出:
=====================向上转型
我是子类的fun1()方法
我是父类的fun2()方法
我是子类的fun2()方法
=====================向下转型
我是子类的fun1()方法
我是父类的fun2()方法
我是子类的fun2()方法
我是子类特有的方法