1111111

                                          实现多态的前提

 1。 要有继承
 2。 要有方法重写,没有也可以,但是没有的话 就没有意义
 3。
    要有父类引用 指向子类对象 如: 父类 f=new 子类();
* 多态中的成员访问特点
* A, 成员变量 编译看左边, 运行看左边
* B, 构造方法 创建子类对象的时候,,访问 父类的构造方法, 对父类的数据进行初始化
* c.成员方法 编译看左边 ,运行看右边
* d. 静态方法 编译看左边 , 运行看左边 (静态和类相关,算不上重写,所以访问还是左边)

 

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显示图片");
  }
}

  

 

posted on 2016-12-10 19:47  WQQBO  阅读(2496)  评论(0编辑  收藏  举报