抽象类是指在类中定义方法,但是并不去实现它,而在它的子类中去具体地实现。定义的抽象方法不过是一个方法占位符。继承抽象类的子类必须实现父类的抽象方法,除非子类也被定义成一个抽象类。
当定义一个类时,常常需要定义一些方法来描述该类的行为特征,但有时这些方法的实现方式是无法确定的。例如,前面在定义Animal 类时,shout()方法用于表示动物的叫声,但是针对不同的动物,叫声也是不同的,因此,在shout()方法中无法准确描述动物的叫声。
针对上面描述的情况,Java 允许在定义方法时不写方法体,不包含方法体的方法为抽象方法,抽象方法必须使用abstract 关键字来修饰,抽象类及抽象方法定义的语法格式:
在定义抽象类时需要注意,包含抽象方法的类必须声明为抽象类,但抽象类可以不包含任何抽象方法,只需使用abstract 关键字来修饰即可。另外,抽象类是不可以被实例化的,因为抽象类中有可能包含抽象方法,抽象方法是没有方法体的,不可以被调用。如果想调用抽象类中定义的方法,则需要创建一个子类,在子类中将抽象类中的抽象方法进行实现。
【例5.12】下面通过一个案例来学习如何实现抽象类中的方法,如文件5-12 所示。
文件5-12 Example12.java
执行结果
汪汪……
当父类的一些方法不能确定时,可以用abstract 关键字来修饰该方法[抽象方法],用abstract来修饰该类[抽象类]。
【例5.13】抽象类实现案例代码,如文件5-13 所示。(www.xing528.com)
文件5-13 Example13.java
执行结果
抽象类注意事项:
(1)抽象类不能被实例化。
(2)抽象类不一定要包含abstract 方法。也就是说,抽象类可以没有abstract 抽象方法。
(3)一旦类包含了abstract 抽象方法,则这个类必须声明为abstract 抽象类。
(4)抽象方法不能有主体。
正确的抽象方法例:abstract void abc();
错语的抽象方法例:abstract void abc(){};
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。