1.多态概述
·多态是面向对象程序设计的一个重要特征,也是既对象、类、继承之后Java的又一个特征内容。
·多态的体现为父类引用变量可以指向子类对象,前提是必须有父子类关系。
·注意:在使用多态后父类引用变量调用方法时,会调用子类重写后的方法。
·多态的定义和使用格式:
父类类型 变量名 = new 子类类型();
2.多态中成员的特点
·多态成员变量:编译运行看左边
·多态成员方法:编译看左边,运行看右边
3.多态的转型
·多态的转型分为向上转型和向下转型两种
·向上转型:多态本身就是向上转型过的过程
使用格式:父类类型 变量名=new 子类类型();
适用场景:当不需要面对子类类型时,通过提高扩展性,或者使用父类的功能就能完成相应的操作。
·向下转型:一个已经向上转型的子类对象可以使用强制类型转换的格式,将父类引用类型转为子类引用各类型
使用格式:子类类型 变量名=(子类类型) 父类类型的变量;
适用场景:当要使用子类特有功能时。
4.通过案例学习
public class Wine {
public void fun1(){
System.out.println("Wine 的Fun.....");
fun2();
}
public void fun2(){
System.out.println("Wine 的Fun2...");
}
}
public class JNC extends Wine{
/**
* @desc 子类重载父类方法
* 父类中不存在该方法,向上转型后,父类是不能引用该方法的
* @param a
* @return void
*/
public void fun1(String a){
System.out.println("JNC 的 Fun1...");
fun2();
}
/**
* 子类重写父类方法
* 指向子类的父类引用调用fun2时,必定是调用该方法
*/
public void fun2(){
System.out.println("JNC 的Fun2...");
}
}
public class Test {
public static void main(String[] args) {
Wine a = new JNC();
a.fun1();
}
}
-------------------------------------------------
Output:
Wine 的Fun.....
JNC 的Fun2...