標籤:編輯 領域 strong code out ddr 基礎學習 java基礎學習 pre
一、抽象類別的概念和定義
在物件導向的概念中,所有的對象都是通過類來描繪的,但是反過來,並不是所有的類都是用來描繪對象的,如果一個類中沒有包含足夠的資訊來描繪一個具體的對象,這樣的類就是抽象類別。
抽象類別的格式:修飾符 abstract class 類名
抽象類別往往用來表徵對問題領域進行分析、設計中得出的抽象概念,是對一系列看上去不同,但是本質上相同的具體概念的抽象。比如,在一個圖形編輯軟體的分析設計過程中,就會發現問題領域存在著圓、三角形這樣一些具體概念,它們是不同的,但是它們又都屬於形狀這樣一個概念,
形狀這個概念在問題領域並不是直接存在的,它就是一個抽象概念。而正是因為抽象的概念在問題領域沒有對應的具體概念,所以用以表徵抽象概念的抽象類別是不能夠執行個體化的。不能執行個體化那具體該怎麼用呢。下面以一個簡單的例子說明。 學生王小明去上海學習Java 這是需求 通過上面的內容我們知道物件導向的主體是學生(物件導向開發主要就是在需求中找到對象)方法是學習 方法實現的功能是(學生+name(王小明)+"去"+address(上海)+"學習java")
public abstract class Person {String name="";//即然是人肯定是要有名字的。int age=0;//年齡Person(String name,int age){this.name=name;this.age=age;}abstract void Study();}
注意了:上面紅色的就是抽象方法。有人會問了,這個方法怎麼沒有方法體。
抽象方法:在類中沒有方法體的方法,就是抽象方法。
抽象類別中的抽象方法必須被實現!
如果一個子類沒有實現父類中的抽象方法,則子類也成為了一個抽象類別!
抽象類別中的普通方法,可以不必實現。
在上面的抽象類別中我們定義一個抽象方法 學習
下面我們定義學生這個主體類。學生類中我們多一個地址的定義。
public class Student extends Person {String address="";//多增加一個屬性地址Student(String name,int age,String address){ super(name,age);//調用超類的構造方法 this.address=address;}@Overridevoid Study(){//實現的抽象方法 System.out.print("學生"+name+" 要去"+address+"學習Java");}}
下面我們寫一個測試類別,測試一下:
public class Test {public static void main(String[] args) {Person perA=new Student("王小明",38,"上海");perA.Study();}}
運行後的結果: 學生王小明去上海學習java
java基礎學習——9、抽象類別