abstract:抽象spa
是用来修饰抽象类和抽象方法的code
那么什么抽象,抽象有究竟有什么用呢??对象
咱们知道,“类”是某一类具备相同特征或行为的物事,是将这些物事特征向上抽取得来的;“父类”也是子类不断向上抽取而来的。blog
好比人这个“类”,都有说话的功能;人“类”下有不少子类,如“中国人”、“德国人”、“法国”人,其都有各本身的语言,即说话功能各不相同。继承
也就是说子类的继承父类“说话”功能的同时,都有各本身特殊的说话功能,用代码表示也就是“子类说话功能会覆盖父类说话功能”。class
在这样的状况下,在父类中定义说话功能就显得多余了,由于其被全部子类覆盖。方法
此时,父类的说话功能内容就要以去除,只保留功能定义,并用abstract(抽象)修饰。static
用代码表示以下:语言
public class AbstractDemo { public static void main(String[] args) { new Chinese().speak(); //创建子类对象,并调用方法 } } // 人都有说话的功能 abstract class People { abstract void speak(); // 抽象方法只定义基本功能定义,不写功能主体。主体部分由子类复写完成,由子类实现。 } // 中国人说中文 class Chinese extends People { void speak() { System.out.println("speak Chinese"); } } // 德国人说德语 class German extends People { void speak() { System.out.println("speak German"); } }
抽象类中的抽象方法,是全部子类所必备具有的,只是各子类的实现方式不同。父类只提供基本的功能,具体怎么实现则由各子类完成。di
功能不肯定的,就能够用抽象来
抽象类的特色:
一、抽象方法必定被定义在抽象类串
二、抽象方法、抽象类必须被abstract关键字修饰
三、抽象方法不能用new建立对象,由于调用抽象方法没有意义
四、抽象类中的抽象方法要被使用,必须由子类复写其全部的抽象方法后,再创建子类对象调用。若是子类只复写了部分抽象方法,那些该子类一个抽象类
抽象类能够有抽象方法,也能够有非抽象方法;也能够没有抽象方法。
父类中的抽象方法,在子类中必须复写。达到父类强制子类完成其功能。
抽象类与通常类的区别:
无太大的区别,该如何描述事物就如何描述。只不过,该事物中出现了一些不确认的东西。这些不确认的东西,也是访一事物的功能,须要确认体现,但没法定义功能主体。
抽象类比通常类多了抽象方法。
抽象类不能被实例化。