向上转型 笔记

package test;
public class TestUpcasting {
  public static void tune(Cycle i){
    i.play(Note.MEDIUM);
  }
  public static void main(String[] args) {
    tune(new UnCycle()); 
  }
}
 
enum Note{
  SMALL,MEDIUM,LARGE;
}
 
class Cycle{
  public void play(Note n){
    System.out.println("Cycle");
  }
}
 
class UnCycle extends Cycle{
//  public void play(Note n){
//    System.out.println("UnCycle");
//  }
}
class BiCycle extends Cycle{
  public void play(Note n){
    System.out.println("BiCycle");
  }
}
class TriCycle extends Cycle{
  public void play(Note n){
    System.out.println("TriCycle");
  }
}



**************************************************************
只写一个简单方法,它仅接收基类作为参数,而不是那些特殊的导出类。不关注导出类是否存在,编写的代码只与基类打交道。印证了多态性。

猜你喜欢

转载自blog.csdn.net/u011580177/article/details/46840345