Java抽象类
一,如何定义抽象类?
class关键字前加abstract
二,抽象类无法被实例化(无法通过new来创建对象),它的实现只能依靠继承关系,通过子类的实例化来实现自身的实例化。
三,抽象类虽然没有办法实例化,但是抽象类也有构造方法,该构造方法是给子类创建对象用的。
-
abstract class Person { //定义一个抽象类,必须被继承
-
-
public Person(){
-
System.out.println("调用的是父类的无参构造函数");
-
}
-
public Person(int i) {
-
System.out.println("调用的是父类的有参构造函数");
-
}
-
}
-
-
class Student extends Person {
-
// 想调用父类抽象类的有参构造函数必须先显式声明,然后通过super函数调用
-
Student(int i) {
-
super(i);
-
//必须显示的调用父类构造方法,super代表父类对象
-
System.out.println("子类的有参构造函数\n");
-
}
-
-
//默认调用父类的无参构造函数,同样必须显式声明
-
Student(){
-
System.out.println("子类的无参构造函数");
-
}
-
}
-
public class Test {
-
public static void main(String[] args) {
-
int i=0;
-
Student 有参 = new Student(i);
-
Student 无参 = new Student();
-
-
-
}
-
}
四,抽象类中可以定义抽象方法。
*抽象方法的语法:在方法的修饰符列表添加abstract关键字。并且该抽象方法应该以“ ;”结束,不能带有“ { } ”。(注:抽象类不能被final修饰)
例如:public abstract void m1( ) ;
五,一个非抽象的类继承抽象类,必须将抽象类中的抽象方法覆盖,实现,重写