JAVA中A a = new B()的方法调用问题

来源:互联网 发布:mac写java web 编辑:程序博客网 时间:2024/04/29 23:33

父类:

public class Animal {    public Animal() {        // TODO Auto-generated constructor stub        System.out.println("I am animal");    }    public void bar(){        System.out.println("bar.........");    }    public void test(){        System.out.println("Animal:hehe......");    }}

子类:

public class Dog extends Animal{/** * @param args */    Dog(){System.out.println("i am a dog");}    public void bar(){    System.out.println("dog....");    }    public void test1(){    System.out.println("dag: hehe.....");    }public static void main(String[] args) {// TODO Auto-generated method stubAnimal a=new Dog();a.bar();a.test();    Animal b=new Animal();    b.bar();    b.test();}}

输出结果:

       I am animal
       i am a dog
      dog....
      Animal:hehe......
      I am animal
      bar.........
     Animal:hehe......


总结:

       Animal a=new Dog()

      实际是先实例化一个子类对象,然后在转换为父类对象。先调用父类构造函数,再调用子类构造函数。当子类重写了父类的方法时,将调用子类的bar()方法。子类没有重写父类方法时,将调用父类方法test()。调用子类特有方法test1()时,编译错误。

     Animal b=new Animal();

    调用的都是父类的方法



0 0
原创粉丝点击