抽象类:abstract
何时需要抽象类?
在程序中,有时候不能确定一个事物具有的具体方法时,需要将该类定义成抽象类。
这个不具体的方法(没有方法体的方法)称为抽象方法。
抽象类和抽象方法都必须用abstract修饰。
例如:
abstract class Dog
{
abstract void howl();
}
class dog extends Dog
{
void howl()
{
system.out.println("wangwang~~");
}
}
class wolf extends Dog
{
void howl()
{
System.out.println("howlhowl~~");
}
}
抽象类的特点:
1,一个方法只有声明没有实现时该方法为抽象方法,用abstract修饰。抽象方法必须定义在抽象类中。
abstract class Demo //抽象类
{
abstract void show(); //抽象方法
}
2,抽象类不能被实例化。
3,抽象类必须有其子类覆盖所有的抽象方法,此时子类才能被实例化,否则不能。
有关抽象类的几个问题:
1,抽象类有构造函数吗?
答:有。抽象类中的构造函数用于子类对象的初始化。
2,抽象类中可不可以不定义抽象方法?
答:可以。目的是不让该类创建对象。AWT的适配器对象就是这种类。
通常这种类中的方法有方法体却没有内容。
abstract class Demo //抽象类
{
abstract void show(); //抽象方法
}
3,抽象关键字不可以与哪些关键字共存?
答:
1,private,private修饰的方法只属于本类,不能被子类方法覆盖。
2,static,抽象类不能被实例化,不能调用静态方法。
3,final,final修饰的方法不能被重写,跟抽象方法必须被重写矛盾。
4,抽象类和一般类的异同?
答:
相同点:
抽象类和一般类都是用来描述事物的,都在类中定义了成员。
不同点:
1,一般类有足够的信息描述事物;
抽象类描述事物的信息一般不足。
2,一般类中不能定义抽象方法,只能定义一般方法;
抽象类中可以定义抽象方法,也可以定义一般方法。
3,一般类可以被实例化;
抽象类不能被实例化。
5,抽象类必须是父类吗?
答:是。因为需要子类覆盖其抽象方法后才可以对子类进行实例化。