tip:如果父类是抽象类时,要重写抽象类中的所有抽象方法
问题:父类都知道子类要重写这个方法了,为什么还多此一举的去定义这个方法?
对于普通类中的继承关系发生之后,定义重写方法为了满足多态的前提。对于抽象类中的继承关系发生之后,定义重写方法为了让子类在设计的时候避免子类的随意性。代码演示:
//以抽象父类举例 //抽象父类 abstract class Animals { String place="房间"; // 父类中的方法被重写时,父类方法修饰符不可以用private abstract void sing(); public void eat() { System.out.println("在吃饭"); } //父类中的方法重写后,子类的参数列表需要和父类一摸一样 public void method(String place) { System.out.println("我在"+place+"看书"); } } //子类 class Dog extends Animals { // 重写了父类中的方法 public void sing() { System.out.println("小狗在汪汪的唱歌"); } public void eat() { System.out.println("我在吃骨头饭"); } public void method(String place) { System.out.println("我在"+place+"看书"); } } //子类 class Cat extends Animals { // 重写了父类中的方法 protected void sing() { System.out.println("小猫在喵喵的唱歌"); } public void eat() { System.out.println("我在吃猫粮"); } public void method(String place) { System.out.println("我在"+place+"看书"); } } //测试类 public class Test1 { public static void main(String[] args) { Dog one = new Dog(); function(one); Cat two = new Cat(); function(two); } // 使用多态的特性,编译看左边,运行看右边 public static void function(Animals a) {// Animals a=new Dog();Animals a=new Cat(); a.sing(); a.eat(); a.method("房间"); } } //执行结果: 小狗在汪汪的唱歌 我在吃骨头饭 我在房间看书 小猫在喵喵的唱歌 我在吃猫粮 我在房间看书返回值和抛出异常,后续在你写项目的时候会用到,在此,我就不举例说明,知道就可以
