抽象类是不是必须要有抽象方法
在回答這個問題之前,先來了解一下抽象類。
在面向對象的概念中,所有的對象都是通過類來描繪的,但是反過來,并不是所有的類都是用來描繪對象的,如果一個類中沒有包含足夠的信息來描繪一個具體的對象,這樣的類就是抽象類。
抽象類除了不能實例化對象之外,類的其它功能依然存在,成員變量、成員方法和構造方法的訪問方式和普通類一樣。由于抽象類不能實例化對象,所以抽象類必須被繼承,才能被使用。也是因為這個原因,通常在設計階段決定要不要設計抽象類。父類包含了子類集合的常見的方法,但是由于父類本身是抽象的,所以不能使用這些方法。
在 Java 中抽象類表示的是一種繼承關系,一個類只能繼承一個抽象類,而一個類卻可以實現多個接口。(菜鳥教程)
抽象方法只包含一個方法名,而沒有方法體。
先定義一個抽象類
public abstract class Student {private String name;private int age;public Student(){};public Student(String name,int age,String adrees){this.name=name;this.age=age;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}}當嘗試new對象的時候,會出現以下錯誤。
我們定義一個pupil類繼承Student,并且new個對象
實例化一個 pupil類對象,該對象將從 Student類繼承 7 個成員方法,且通過該方法可以設置或獲取兩個成員變量。
我們在Student里面新增一個抽象方法
繼承Student的pupil必須實現父類的抽象方法。
@Overridepublic void Shuchu() {System.out.println(name+age);}這里要注意,如果構造方法走的是父類的,那么打印出來的值將為空,因為值賦值給了父類的變量,pupil里面的變量值還是空的。
總結以上,抽象類并不是一定需要抽象方法,但是一個類擁有抽象方法,那么這個類必須是抽象類,子類必須實現父類的抽象方法,或者子類本身也為抽象類,抽象類絕對不能用來初始化對象。
抽象類不能被實例化(初學者很容易犯的錯),如果被實例化,就會報錯,編譯無法通過。只有抽象類的非抽象子類可以創建對象。
抽象類中不一定包含抽象方法,但是有抽象方法的類必定是抽象類。
抽象類中的抽象方法只是聲明,不包含方法體,就是不給出方法的具體實現也就是方法的具體功能。
構造方法,類方法(用 static 修飾的方法)不能聲明為抽象方法。
抽象類的子類必須給出抽象類中的抽象方法的具體實現,除非該子類也是抽象類。
抽象方法需要被實現,不能被聲明為靜態,private,final修飾
總結
以上是生活随笔為你收集整理的抽象类是不是必须要有抽象方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Google地图 Google Plac
- 下一篇: 天朝有一个乞丐姓洪,去天桥要钱 第一天要