向上造型(向下造型)
合理运用向上造型 ,能够减少代码量,优化代码.总结如下:
1,向上造型
类型提升,自动类型转换
基本类型自动类型转换
byte → short → int → long → float → double ↑ char
引用类型自动类型转换(向上造型)
小类型 → 自动转换 → 大类型 //父类引用调用子类对象
exp Dog dog=new Dog(); Animal animal=dog;
等价于
Animal animal=new Dog();
package test01;import org.omg.CORBA.PUBLIC_MEMBER;public class Test01 { public static void main(String[] args){ //----------------使用向上造型------------- Test01 test=new Test01(); test.display(new LcdDisplayer ()); test.display(new HwDisplayer()); //---------------不使用向上造型---------------------- test.display(new LcdDisplayer()); test.display(new HwDisplayer()); } //--------------向上造型,相同的方法只写一遍,简化了代码量---------------- public void display(Displayer dis){ dis.displayText(); dis.displayGraph(); } //--------------不使用向上造型,相同的方法要重复写-------------------- public void display(LcdDisplayer dis){ dis.displayText(); dis.displayGraph(); } public void display(HwDisplayer dis){ dis.displayText(); dis.displayGraph(); }}//-----------------------------------class Displayer{//显示器 父类 public void displayText(){ System.out.println("显示文字"); } public void displayGraph(){ System.out.println("显示图片"); }}//----------------------------------------class LcdDisplayer extends Displayer{//子类.继承父类 public void displayText(){ System.out.println("LCD显示文字"); } public void displayGraph(){ System.out.println("LCD显示图片"); } public void other(){ System.out.println("子类B1方法"); }}//--------------------------------------------class HwDisplayer extends Displayer {//子类,继承父类 public void displayText(){ System.out.println("HW显示文字"); } public void displayGraph(){ System.out.println("HW显示图片"); }}