当定义一个类时,常常需要定义一些 方法来描述该类的行为特征,但有时这些方法的实现方式是无法确定的。
故在java中,允许在定义方法时
不写方法体,不包含方法体的方法为
抽象方法,必须用
abstract关键字来修饰
特点:
抽象方法的类必须声明为抽象类,但抽象类可以不包含任何抽象方法,只需用abstract修饰即可
抽象类不可以被实例化,因为抽象类中可能包含抽象方法,抽象方法是没有方法体的,不可以被调用
如果想要调用抽象类中的方法,可以创建一个子类,在子类中将抽象类中的抽象方法进行实现。
例子:
abstract class Animal //抽象类
{
void eat(){ //非抽象方法
System.out.println("吃东西");
}
abstract void shout();//抽象方法
}
class Dog extends Animal
{
void shout(){
System.out.println("汪汪。。。。");
}
}
class Example
{
public static void main(String[] args)
{
Dog dog=new Dog();
dog.shout();
dog.eat();
}
}
运行结果:
汪汪。。。。
吃东西
总结:
1.抽象类一定是父类
2.抽象类有构造方法
3.抽象类中可以不定义抽象方法
4.抽象不能和以下关键字共存:
final、private、static