• 多态变量和向上造型
    • 多态变量
      • 子类和子类型
        • 类定义了类型
        • 子类定义了子类型
      • 子类的对象可以被当作父类的对象来使用
        • 赋值给父类的变量
        • 传递给需要父类对象的函数
        • 放进存放父类对象的容器里
      • 多态变量
        • Java的对象变量是多态的,它们能保存不止一种类型的对象
        • 它们可以保存的是声明类型的对象,或声明类型的子类的对象
        • 当把子类的对象赋给父类的变量的时候,就发生了向上造型
    • 向上造型
      • 子类的对象可以赋值给父类的变量
        • 注意,只是管理者发生了变化
      • 父类的对象不能赋值给子类的变量
        • Vechicle v = new Vechicle();
        • Car c = new Car();
        • v = c;//可以
        • c = v 错误
      • 可以用造型
        • c = (Car) v ;
        • (只有当v这个变量实际管理的是Car才行)
      • 造型
        • 用括号围起类型放在值的前面
        • 对象本身并没有发生任何变化
          • 所以不是“类型转换”
        • 运行时有机制
  • 类型系统
    • Object类
      • 图片
      • toString函数
        • 1 public String toString()
          2 {
          3 return "CD [artist=" + artist + ", numofTracks=" + numofTracks + ", toString()=" + super.toString() + "]";
          4 }

           

      • equals函数
        • 1 public boolean equals(Object obj)
          2 {
          3 // TODO Auto-generated method stub
          4 CD c = (CD)obj;
          5 return artist.equals(c.artist);
          6 }

           

    • 增加新的子类
      • 可扩展性
        • 不需要修改就可以直接去适应新的情况
      • 可维护性
        • 经过修改可以去适应新的情况
      •  1 package com.dome;
         2 
         3 public class MP3 extends Iterm
         4 {
         5 
         6     private String artist; 
         7     
         8     public MP3(String title, int playingTime, boolean gotIt, String comment,String artist)
         9     {
        10         super(title, playingTime, gotIt, comment);
        11         // TODO Auto-generated constructor stub
        12         this.artist=artist;
        13     }
        14 
        15     
        16     
        17     @Override
        18     protected void print()
        19     {
        20         // TODO Auto-generated method stub
        21         System.out.print("MP3:");
        22         super.print();
        23         System.out.println(":"+artist);
        24     }
        25 
        26 
        27 
        28     public static void main(String[] args)
        29     {
        30         // TODO Auto-generated method stub
        31 
        32     }
        33 
        34 }

         

posted on 2020-02-07 02:18  生长的力量  阅读(191)  评论(0编辑  收藏  举报