一、抽象类
在Java中,不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。
抽象类除了不能实例化对象之外,类的其它功能依然存在,成员变量、成员方法和构造方法的访问方式和普通类一样。
由于抽象类不能实例化对象,所以抽象类必须被继承,才能被使用。
二、抽象方法
只有方法的声明,没有方法体的方法为抽象方法。
三、特点
1.有抽象方法的类一定是抽象类,抽象方法必须存在于抽象类中。
2.构造方法,类方法(用static修饰的方法)不能声明为抽象方法。
3.抽象类不能实例化对象。
4.抽象类强制继承它的子类重写其抽象方法。(子类只有重写了所有的抽象方法,子类才可以创建对象,否则子类还是一个抽象类)
5.抽象类、抽象方法不能被private、final、static修饰
6.抽象类中可以定义非抽象方法(子类可直接使用非抽象方法)
7.在抽象类中,定义抽象方法,关键字abstract不能省略。
四、定义
在Java中,使用abstract关键字,来定义抽象类和抽象方法。
例:
//定义抽象类
public abstract class AbstractDemo_1 {
//定义抽象方法
public abstract void fun_1();
//定义非抽象方法
public void fun_2(){
System.out.println("我不是抽象方法!");
}
}
五、抽象类的使用
抽象类不能被实例化,必须要创建子类,继承抽象类,重写里面的抽象方法,然后创建子类对象来使用。
例:
//定义抽象类
public abstract class AbstractDemo_1 {
//定义抽象方法
public abstract void fun_1();
//定义非常抽象方法
public void fun_2(){
System.out.println("我不是抽象方法!");
}
}
//定义一个类,继承上述定义的抽象类
class AbstractTest_1 extends AbstractDemo_1{
//强制重写父类中的抽象方法
@Override
public void fun_1() {
System.out.println("重写父类中的抽象方法!");
}
}
//定义测试类
class Test{
public static void main(String[] args){
//创建子类对象
AbstractTest_1 at = new AbstractTest_1();
//调用重写后的抽象方法
at.fun_1();
//调用父类中的非抽象方法
at.fun_2();
}
}