1、抽象类特点
(1)方法只有声明没有实现时,该方法就是抽象方法,需要被关键字abstract所修饰,抽象方法必须定义在抽象类中,该类也必须用abstract关键字进行修饰。
(2)抽象类不可以实例化,因为调用抽象方法没有意义。
(3)抽象类必须要有其子类覆盖了所有的抽象方法后,该子类才可以被实例化,否则该子类还是一个抽象类。
2、抽象类中的构造函数一般用于子类的初始化
3、抽象类中可以不定义抽象方法,但很少见,目的就是不让该类创建对象。AWT的适配器对象就是这种类。通常该类中有方法体,没有内容。
4、抽象关键字不可以和那些关键字共存? private ,static,final
5、抽象类一定是个父类吗?是的。因为需要子类覆盖其方法后才可以对子类实例化。
class AbstractDemo1
{
public static void main(String[] args)
{
Student s = new Student("旺财",23);
Worker w = new Worker("小强",30);
s.show();
s.work();
w.show();
w.work();
}
}
abstract class Person
{
int age;
String name;
Person(String name, int age){ //构造函数用于给子类进行初始化
this.name = name;
this.age = age;
}
void show(){
System.out.println("name="+this.name+"\n"+"age="+this.age);
}
abstract void work();
}
class Student extends Person
{
Student(String name, int age){
super(name,age);
}
void work(){
System.out.println("student is studying...");
}
}
class Worker extends Person
{
Worker(String name, int age){
super(name,age);
}
void work(){
System.out.println("worker is working...");
}
}
程序运行结果:
name=旺财
age=23
student is studying..
name=小强
age=30
worker is working...