1.定义
(1)抽象类,被abstract关键字修饰的类
(2)抽方法,被abstract关键字修饰的方法
2.书写格式
(1)abstract class 类名{...},表示抽象类
(2)abstract returnType 方法名(参数列表),表示抽象方法
3.使用方法
(1)对象不能由抽象类直接创建,只可以抽象类派生出新的子类,再由子类创建对象
(2)抽象方法只声明返回的数据类型,方法名称和所需的参数,没有方法体,也就是说抽象方法只声明而不实现,意味着这个方法必须在子类中被重写
4.作用
(1)当知道一个类的子类将不同的实现某个方法时,把该类声明为抽象类很有用,可以共用相同的父类方法,不必再定义
(2)抽象类存在的意义是用来被继承的。一个类继承了一个抽象类,必须实现抽象类里面所有的抽象方法
5.注意事项
(1)抽象类中不一定含有抽象方法,但包含抽象方法的类一定要被声明为抽象类
(2)抽象类不能用final关键字修饰,即一个类不能既是最终类又是抽象类,因为抽象类需要重写。
(3)abstract不能与private,static,final,native并列修饰同一个方法
(4)抽象类中可以包含构造方法,但构造方法不能被声明为抽象方法,因为抽象类不能直接创建对象
执行结果如下:
(1)抽象类,被abstract关键字修饰的类
(2)抽方法,被abstract关键字修饰的方法
2.书写格式
(1)abstract class 类名{...},表示抽象类
(2)abstract returnType 方法名(参数列表),表示抽象方法
3.使用方法
(1)对象不能由抽象类直接创建,只可以抽象类派生出新的子类,再由子类创建对象
(2)抽象方法只声明返回的数据类型,方法名称和所需的参数,没有方法体,也就是说抽象方法只声明而不实现,意味着这个方法必须在子类中被重写
4.作用
(1)当知道一个类的子类将不同的实现某个方法时,把该类声明为抽象类很有用,可以共用相同的父类方法,不必再定义
(2)抽象类存在的意义是用来被继承的。一个类继承了一个抽象类,必须实现抽象类里面所有的抽象方法
5.注意事项
(1)抽象类中不一定含有抽象方法,但包含抽象方法的类一定要被声明为抽象类
(2)抽象类不能用final关键字修饰,即一个类不能既是最终类又是抽象类,因为抽象类需要重写。
(3)abstract不能与private,static,final,native并列修饰同一个方法
(4)抽象类中可以包含构造方法,但构造方法不能被声明为抽象方法,因为抽象类不能直接创建对象
6.现在让我们编写程序用abstract关键字
abstract class People {//定义抽象类
String sex,name;
People(String a,String b) {//定义抽象类的一般方法
sex=a;
name=b;
}
abstract void speak();//定义抽象方法
}
class Student extends People{
String job;
Student(String a,String b,String c) {
super(a,b);
job=c;
}
void speak() {
System.out.println("I'm "+job);
}
}
public class Test {
public static void main(String[] args) {
Student t=new Student("女","李丽","studying");
t.speak();
}
}
执行结果如下: