可以将一个子类的对象赋给超类变量 我理解的是 超类可以对子类中的方法指手画脚 但前提是只能对子类中的父类方法可以这样 子类中新扩展的方法父类无权操作 是这个意思不?

解决方案 »

  1.   

    建议看看upcasting(回溯)是怎么回事。
    你现在看这个问题的角度是不对的。比oo的底层实现方式要高,比oo的实际应用要低。抽象层次抓的不对容易产生歧义。
      

  2.   

    多态是指在执行期间(非编译期)判断所引用对象的实际类型,根据其实际类型调用其相应的方法。多态的三个必须条件:
          1.要有继承
          2.要有重写
          3.父类引用指向子类对象如:
       class Animal{
             private String name;
             Animal(String name){
                   this.name=name;
             }
             public void enjoy(){
                   System.out.println("叫声.......");
             }
      }  class Bird extends Animal{
            private String featherColor;
            Bird(String name,String f){
                  super(n);
                  featherColor=f;
            }
            public void enjoy(){
                  System.out.println("鸟叫声.......");
            }
    }class lady{
          private String name;
          Lady(String name,Animal pet){}
          public void myPetEnjoy(){
                  pet.enjoy();
         }
    }public class Test{
          public static void main(String[] args){
                 lady h=new lady("h",new Bird("birdname","green"));//父类引用指向子类对象
                 h.myPetEnjoy();//动态调用子类的方法
          }
    }