public static void main(String[] args) { Animal animal= new Animal(); animal.name="动物"; animal.shout(); animal.sleep(); System.out.println(); Dog dog = new Dog(); dog.name= "旺财"; System.out.print("狗狗"+dog.name); dog.shout(); dog.sleep(); System.out.println(); Cat cat = new Cat(); cat.name="小花"; System.out.print("猫咪"+cat.name); cat.shout(); cat.sleep(); } }
运行结果:
1 2 3 4 5 6 7
闭上眼睛就睡觉
狗狗旺财汪汪叫 闭上眼睛就睡觉
猫咪小花喵喵叫 闭上眼睛就睡觉
从上面的类中我们可以发现animal类中的shout()方法在生活中几乎是不可能用到的,于是我们为了代码的简洁,shout()方法不需要方法体,但是会报错误This method requires a body instead of a semicolon。于是我们便引入了abstract关键字。当我们加上abstract之后,还是会报错误The abstract method shout in type Animal can only be defined by an abstract class。那么怎么办呢?抽象方法需要在抽象类中定义。
1 2 3 4 5 6 7 8 9 10 11 12 13 14
public abstract class Animal {
String name; public Animal() { // TODO Auto-generated constructor stub } public void sleep() { System.out.println("闭上眼睛就睡觉"); } public abstract void shout() ; }