9.3 抽象类

抽象类的产生:

某个父类只是知道子类应该包含怎么样的方法,但是无法准确知道子类如何实现这些方法。比如一个图形类应该有一个求周长的方法,但是不同的图形求周长的算法不一样。那么这个方法就称为抽象方法。
分析事物时,发现了共性内容,就出现向上抽取。会有这样一种特殊情况,就是方法功能声明相同,但方法功能主体不同。那么这时也可以抽取,但只抽取方法声明,不抽取方法主体。那么此方法就是一个抽象方法。

当定义了抽象函数的类也必须被abstract关键字修饰,被abstract关键字修饰的类是抽象类。


抽象类和抽象方法的定义:

抽象方法定义的格式:

public abstract 返回值类型方法名(参数);

抽象类定义的格式:

abstract class 类名 {

}

实例代码:

//研发部员工

abstractclass Developer {

    publicabstractvoid work();//抽象函数。需要abstract修饰,并分号;结束

}

//JavaEE工程师

class JavaEE extendsDeveloper{

    publicvoid work() {

        System.out.println("正在研发淘宝网站");

    }

}

//Android工程师

class Android extendsDeveloper {

    publicvoid work() {

        System.out.println("正在研发淘宝手机客户端软件");

    }

}


抽象类的特点:

1、抽象类和抽象方法都需要被abstract修饰。抽象方法一定要定义在抽象类中。

2、抽象类不可以直接创建对象,原因:调用抽象方法没有意义。

3、只有覆盖了抽象类中所有的抽象方法后,其子类才可以创建对象。否则该子类还是一个抽象类。

     之所以继承抽象类,更多的是在思想,是面对共性类型操作会更简单。


抽象类的细节问题:

1、抽象类一定是个父类? 

                  是的,因为不断抽取而来的。

2、抽象类中是否可以不定义抽象方法。

     是可以的,那这个抽象类的存在到底有什么意义呢?不让该类创建对象,方法可以直接让子类去使用

3、抽象关键字abstract不可以共存的关键字:       

  1、private:私有的方法子类是无法继承到的,也不存在覆盖,而abstract和private一起使用修饰方法,abstract既要子类去实现这个方法,而private修饰子类根本无法得到父类这个方法。互相矛盾。

  2、final

  3、static


阅读更多
个人分类: JAVASE
上一篇9.2 继承--子父类中成员变量和成员方法的特点
下一篇第九章案例 员工类系列的定义
想对作者说点什么? 我来说一句

iOS 9.3 Xcode开发包

2016年03月25日 11.87MB 下载

iar for 8051 9.3破解

2016年04月03日 64KB 下载

ArcGIS 9.3全套

2015年11月23日 48B 下载

arcgis 9.3 破解文件

2010年09月03日 19.39MB 下载

没有更多推荐了,返回首页

关闭
关闭