抽象类定义规则
· 抽象类和抽象方法都必须用 abstract 关键字来修饰。
· 抽象类不能被实例化,也就是不能用 new 关键字去产生对象。
· 抽象方法只需声明,而不需实现。
· 含有抽象方法的类必须被声明为抽象类,抽象类的子类必须复写所有的
抽象方法后才能被实例化,否则这个子类还是个抽象类。
格式
abstract class 类名称 // 定义抽象类
{
声明数据成员 ;
访问权限 返回值的数据类型 方法名称(参数…)
{
… 定义一般方法
}
abstract 返回值的数据类型 方法名称(参数…);
// 定义抽象方法,在抽象方法里,没有定义方法体
}
1. 这些条件都是有 原因的,首选想抽象就必须用abstract来修饰类或者方法。
2. 抽象类不能实例化
3. 一个类中如果有抽象方法,那么这个类必须是抽象类
4. 所以如果子类中不重写抽象方法,子类就必须是抽象类
5.抽象类只是类的一种而已,也有成员变量和方法。
6. 子类的实例化是要先访问父类的构造方法的,所以子类的构造方法必须要调用父类的构造方法
//抽象类
public abstract class AbstractPerson {
int age;
public AbstractPerson(int age) {
this();
this.age = age;
System.out.println("父类构造方法");
}
public AbstractPerson() {
// TODO Auto-generated constructor stub
}
public void eat(){
System.out.println("吃饭时间到");
}
public abstract void play();
}
//子类
public class Student extends AbstractPerson{
public Student(int age) {
//父类的构造方法
super(age);
//父类中的属性
super.age=1;
// TODO Auto-generated constructor stub
}
public void play() {
// TODO Auto-generated method stub
System.out.println("谁喜欢打篮球");
}
}
抽象类和普通类的区别
抽象类比普通类多了一个修饰符abstract就多了一些限制和功能
抽象方法和普通方法的区别
抽象方法比普通方法多了个修饰符abstract少了个方法主体