class A{ public A(String name){ System.out.print("父类有参构造器"); } } class B extends A{ public B(){ super("lzl"); //不可省略,()中的内容可任意,只要符合String类型,必须在首行 System.out.print("子类无参构造器"); } } public class Test{ public static void main(String[] args){ B b = new B(); } }
子类继承父类时,调用方法时优先选择子类中被重写的方法,若没有,就会调用父类中的方法 继承时,子类可以创建父类中没有的方法,也可以使用; 但使用过程中需要注意,在多态里子类创建了自己的方法后,通过向上转型进行动态绑定创建对象后,对象调用子类自己创建的方法会报错 Animal dog = new Dog();这句表现的是JAVA的多态,表示由一个父类的引用指向子类,因为是引用的是动物类型,而动物类没有getC()方法,所以编译器会认为,这个方法是不存在的。如果要通过编译必须这样写:Dog dog = new Dog();这就没有体现java中的多态,没有父类引用指向子类对象,只是继承。 好比是:我说要一个动物,你给我一只小狗,这是可以的,但是狗会啃骨头,并不等于其他动物都会啃骨头。所以你给我一个动物,然后告诉我它要啃骨头,然而这只动物未必是小狗,所以我告诉你编译错误了。