1、定义规则
· 抽象类和抽象方法都必须用abstract关键字来修饰。
· 抽象类不能被实例化,也就是不能用new关键字去产生对象。
· 抽象方法只需声明,而不需实现。
· 含有抽象方法的类必须被声明为抽象类,抽象类的子类必须复写所有的抽象方法后才能被实例化,否则这个子类还是个抽象类。
2.格式:
abstract class 类名称 {// 定义抽象类
声明数据成员;
访问权限 返回值的数据类型方法名称(参数…){ //定义一般方法
…
}
abstract 返回值的数据类型方法名称(参数…);
// 定义抽象方法,在抽象方法里,没有定义方法体
}
注意:在抽象类定义的语法中,方法的定义可分为两种:一种是一般的方法,它和先前介绍过的方法没有什么两样;另一种是“抽象方法”,它是以abstract关键字为开头的方法,此方法只声明了返回值的数据类型、方法名称与所需的参数,但没有定义方法体。
与一般类相同,在抽象类中,也可以拥有构造方法,但是这些构造方法必须在子类中被调用。
例:
//抽象类 public abstract class chou { String name; int age; public chou(String name,int age){//抽象类构造方法 this.name=name; this.age=age; } public abstract String show();//声明一个抽象方法show() } public class chou1 extends chou { public chou1(String n,int a){//构造方法 super(n,a); //在这里必须明确调用抽象类中的构造方法 } public String show(){//复写抽象类中show方法 return "学生姓名"+name+",年龄"+age; } } public class chou2 extends chou { public chou2(String name,int age){//构造方法 super(name,age);//在这里必须明确调用抽象类中的构造方法 } public String show(){//复写抽象类中show方法 return "老师姓名"+name+",年龄"+age; } } public class chou3 { public static void main(String[] args) { chou1 c=new chou1("d",18); chou2 c1=new chou2("dong",28); System.out.println(c.show()); System.out.println(c1.show()); } }