public class Pet {
public void play(){ //这是宠物类,普通父类,方法里是空的
}
}
--------------------------
public class Cat extends Pet { //这是子类,是一个猫类,重写了父类方法
public void play(){
System.out.println("猫爬树");
}
}
------------------------
public class Dog extends Pet { //这是子类,是一个狗类,重写了父类方法
public void play(){
System.out.println("狗啃骨头");
}
}
-------------------------
public class Test {
public static void main(String[] args) { //这是测试类,分别调用了子类的不同方法
Pet p1=new Dog(); //多典型的多态表现啊,相当的给力
Pet p2=new Cat();
p1.play();
p2.play();
}
}
-----------------------
输出结果:
狗啃骨头
猫爬树
-----------------------
代码演示完了,我的问题就是,把父类改成抽象类,方法改成抽象方法,那么
public void play();//抽象方法没方法体
子类不变,依然重写父类方法,那这个跟普通父类没区别啊?
难道说就一个抽象方法没方法体就完事了??那我普通方法有方法体,我空着不写内容不就得了,不跟抽象方法一个样吗??
别跟我说抽象类还不能实例化,哥也不需要去new它!
普通类都能搞定的,还弄个抽象类有什么意义?我前面都说了普通类的方法我可以空着不写,达到跟抽象类方法没方法体一样的效果。
既然两种方式都能达到同一个输出效果,弄一种方式不就得了,那为什么还要创造出一个抽象类出来?难道是比普通类看着舒服?用着爽?还是更加便捷?还是为了强制让别人用的时候必须强制化实现抽象方法省的你忘了什么的?
谁能说说这俩有什么区别吗?
------解决方案--------------------
就是这样