Java基础篇---------抽象类

在之间的文章中说到了继承就像儿子继承父亲,其实抽象类的思想类似继承思想,我们从武侠小说的角度来解析一番何为抽象类思想。郭靖向洪七公学降龙十八掌的时候是一招一式一板一眼老老实实的学,师傅怎么教,徒弟就怎么学,这对应着继承。而张无忌像张三丰学太极拳法的时候,需要先将招式忘光,才能学会真正的太极拳法,注重其意而非其形,这种武学思想映射到编程里就是抽象类。

抽象类除了不能实例化对象之外,类的其它功能依然存在,成员变量、成员方法和构造方法的访问方式和普通类一样。由于抽象类不能实例化对象,所以抽象类必须被继承,才能被使用。也是因为这个原因,通常在设计阶段决定要不要设计抽象类。

在Java语言中使用abstract class来定义抽象类和抽象方法,注意抽象方法没有任何具体内容,充分体现了只求其意而非其形的思想。以下是基本语法的示例代码:

public abstract class TaiJiQuanFa
{
    public abstract void start();
}
public class ZhangWuJi extends TaiJiQuanFa {
	public void start() {
		System.out.println("张无忌使出了一套太极拳法!");
	}
}
public class AbstractDemo
{
    public static void main(String[] args)
    {
        TaiJiQuanFa a = new ZhangWuJi();
        a.start();
    }
}

了解完抽象类的思想和基本语法,下面我们通来讲为什么要使用抽象类。 

其实道理很简单,用刚才的例子就可以解释,这套武学拳法没有具体招式,你让父类怎么办?。每个子类都需要使用到该方法,但父类方法不确定要如何做才是最通用且没用问题的,那只能通过抽象类来解决了,Java抽象类要求抽象方法必须被子类重写。

抽象类规范:

  1. 抽象类不能被实例化(初学者很容易犯的错),如果被实例化,就会报错,编译无法通过。只有抽象类的非抽象子类可以创建对象。

  2. 抽象类中不一定包含抽象方法,但是有抽象方法的类必定是抽象类。

  3. 抽象类中的抽象方法只是声明,不包含方法体,就是不给出方法的具体实现也就是方法的具体功能。

  4. 构造方法,类方法(用static修饰的方法)不能声明为抽象方法。

  5. 抽象类的子类必须给出抽象类中的抽象方法的具体实现,除非该子类也是抽象类。

 

你可能感兴趣的:(JAVA基础)