抽象方法是什麼?
什麼是抽象類和抽象方法?
抽象類就是不能使用new方法進行實例化的類,即沒有具體實例對象的類。抽象類有點類似“模板”的作用,目的是根據其格式來創建和修改新的類。對象不能由抽象類直接創建,只可以通過抽象類派生出新的子類,再由其子類來創建對象。當一個類被聲明為抽象類時,要在這個類前面加上修飾符abstract。 在抽象類中的成員方法可以包括一般方法和抽象方法。抽象方法就是以abstract修飾的方法,這種方法只聲明返回的數據類型、方法名稱和所需的參數,沒有方法體,也就是說抽象方法只需要聲明而不需要實現。當一個方法為抽象方法時,意味著這個方法必須被子類的方法所重寫,否則其子類的該方法仍然是abstract的,而這個子類也必須是抽象的,即聲明為abstract。 抽象類中不一定包含抽象方法,但是包含抽象方法的類一定要被聲明為抽象類。抽象類本身不具備實際的功能,只能用於派生其子類。抽象類中可以包含構造方法,但是構造方法不能被聲明為抽象。 抽象類不能用final來修飾,即一個類不能既是最終類又是抽象類。 abstract不能與private、static、final、native並列修飾同一個方法。 程序舉例:abstract class Animal //定義抽象類 abstract void eat(); //定義抽象方法}class Horse extends Animal //定義繼承Animal的子類 void eat() //重寫父類的抽象方法 }class Dog extends Animal void eat() }class test}運行結果: 馬吃草料! 狗吃骨頭!
什麼叫JAVA的抽象方法?
抽象方法定義在抽象類或接口中,它只有方法的聲明沒有實現例如;
public abstract class AAA{
public abstract voi弧 test();
}
上面的test方法就是抽象方法,他後面直接寫一個;號不能帶{}
抽象類中的方法都必須是什麼
1.抽象類與抽象方法的關係是:抽象方法必須在抽象類中,如果抽象方法不在抽象類中,則會編譯報錯,這個是規定的。
2.抽象類中的方法不一定要必須是抽象方法,可以有抽象方法,和非抽象方法。其中非抽象方法,往往都是抽象類的所有子類所具有的,而抽象方法則由具體的不同子類實現不同的方法
所以綜上所述,這句話是錯誤的。
另外題外話。我是這麼理解抽象類的。
水果就是一個抽象類。如果我叫你拿出一個水果的實例,對象出來,你肯定拿不出一個叫水果的實例,對象。你只是能拿出比如蘋果,香蕉等水果的子類實例。
水果中的非抽象方法類似於蘋果,香蕉都有皮,都有水(所以這些不用我們去實現)
抽象方法為:水果的形狀(所以我們就要在蘋果,香蕉中實現不同的形狀方法)
純手打~~忘採納
Java中什麼叫做抽象方法只需聲明,而不需實現?
實現是針對其子類:例如
public abstract class Father{
//只申明,不實現
public abstract void show();
}
public class Child extends Father{
//實現
public void show{
System.out.println("show method!");
}
}
實現了方法,不覺得麼?
你看父類的方法
public abstract void show();
只是做了聲明,並沒有方法體。
在其子類中:
public void show{
System.out.println("show method!");
}
實現了方法內部功能,我只是輸出一句話,當然你可以做其他功能。
java中抽象方法可以有方法體嗎
抽象的意思沒有具體的實體,是總結出來的東東。就像讓你吃飯一樣,你怎麼知道會吃什麼?或者你管我吃啥。你只是讓我去吃飯。
抽象方法的意思就是,定義了方法名,但不寫具體幹什麼。也就是說肯定沒有方法體。
但是抽象類中是可以寫非抽象方法的!!!
虛方法和抽象方法的區別是什麼?
抽象方法
使用abstract關鍵字 public abstract bool Withdraw(…);
抽象方法是必須被派生類覆寫的方法。
抽象方法是可以看成是沒有實現體的虛方法
如果類中包含抽象方法,那麼類就必須定義為抽象類,不論是否還包含其它一般方法
虛方法
使用virtual關鍵字 public virtual bool Withdraw(…);
調用虛方法,運行時將確定調用對象是什麼類的實例,並調用適當的覆寫的方法。
虛方法可以有實現體
若一個實例方法的聲明中含有 virtual 修飾符,則稱該方法為虛擬方法;一個虛擬方法的實現可以由派生類取代。取代所繼承的虛擬方法的實現的過程稱為重寫該方法;在一個虛擬方法調用中,該調用所涉及的那個實例的運行時類型確定了要被調用的究竟是該方法的哪一個實現。
虛函數的限制:
1.虛函數僅適用於有繼承關係的類對象, 所以只有類的成員函數才能說明為虛函數.
2.靜態成員函數不能是虛函數.
3.內聯函數不能是虛函數.
4構造函數不能是虛函數.
5.析構函數可以是虛函數.
簡單點說,抽象方法是需要子類去實現的.虛方法,是已經實現了,子類可以去覆蓋,也可以不覆蓋取決於需求.
如
public abstract class AUser
{
public abstract UserInfo getUser();
public virtual void Save(UserInfo info)
{
//實現保存的功能
}
}
public class UserSqlServer:AUser
{
public override UserInfo getUser()
{
//一定要實現的,抽象類只給了抽象方法
}
//假設抽象類針對SqlServer實現的功能,這裡不需要實現了.
}
public class UserOracle:AUser
{
public override UserInfo getUser()
{
//一定要實現的,抽象類只給了抽象方法
}
//假設......
java抽象類中沒有抽象方法有什麼用
就是單純的不想讓你創建這個類的實例,所以就把這個類給抽象起來。
數據抽象方法的定義
數據類型是和數據結構密切相關的一個概念。它最早出現在高級程序設計語言中,用以刻劃程序中操作對象的特性。在用高級語言編寫的程序中,每個變量、常量或表達式都有一個它所屬的確定的數據類型。類型顯式地或隱含地規定了在程序執行期間變量或表達式所有可能的取值範圍,以及在這些值上允許進行的操作。因此,數據類型(DataType)是一個值的集合和定義在這個值集上的一組操作的總稱。 在高級程序設計語言中,數據類型可分為兩類:一類是原子類型,另一類則是結構類型。原子類型的值是不可分解的。如C語言中整型、字符型、浮點型、雙精度型等基本類型,分別用保留字int、char、float、double標識。而結構類型的值是由若干成分按某種結構組成的,因此是可分解的,並且它的成分可以是非結構的,也可以是結構的。例如,數組的值由若干分量組成,每個分量可以是整數,也可以是數組等。在某種意義上,數據結構可以看成是“一組具有相同結構的值”,而數據類型則可被看成是由一種數據結構和定義在其上的一組操作所組成的。 抽象數據類型 抽象數據類型(AbstructDataType,簡稱ADT)是指一個數學模型以及定義在該模型上的一組操作。抽象數據類型的定義取決於它的一組邏輯特性,而與其在計算機內部如何表示和實現無關。即不論其內部結構如何變化,只要它的數學特性不變,都不影響其外部的使用。 抽象數據類型和數據類型實質上是一個概念。例如,各種計算機都擁有的整數類型就是一個抽象數據類型,儘管它們在不同處理器上的實現方法可以不同,但由於其定義的數學特性相同,在用戶看來都是相同的。因此,“抽象”的意義在於數據類型的數學抽象特性。 但在另一方面,抽象數據類型的範疇更廣,它不再侷限於前述各處理器中已定義並實現的數據類型,還包括用戶在設計軟件系統時自己定義的數據類型。為了提高軟件的重用性,在近代程序設計方法學中,要求在構成軟件系統的每個相對獨立的模塊上,定義一組數據和施於這些數據上的一組操作,並在模塊的內部給出這些數據的表示及其操作的細節,而在模塊的外部使用的只是抽象的數據及抽象的操作。這也就是面向對象的程序設計方法。 抽象數據類型的定義可以由一種數據結構和定義在其上的一組操作組成,而數據結構又包括數據元素及元素間的關係,因此抽象數據類型一般可以由元素、關係及操作三種要素來定義。 抽象數據類型的特徵是使用與實現相分離,實行封裝和信息隱蔽。就是說,在抽象數據類型設計時,把類型的定義與其實現分離開來。
虛方法和抽象方法的區別,適用場合是什麼?
先說說區別:
1、虛方法必須有實現部分,抽象方法不可以有實現部分;
2、虛方法可以在派生類中重寫也可以不重寫,抽象方法必須在派生類中重寫
3、虛方法可以在任何非密封類中聲明,抽象方法只能在抽象類中聲明。
4、如果類包含抽象方法,那麼該類也必須為抽象的,不能實例化。
相比而言,虛方法傾向於代碼複用,抽象方法更類似一種規約來約束子類必須實現某方法。
舉個例子(未必恰當、只為說明問題):
比如有個基類“動物”;兩個子類“獅子”、“青蛙”。
獅子捕獵:鎖定目標、用牙齒和利爪抓獲;
獅子說話:噢嗚;
青蛙捕獵:鎖定目標、用舌頭抓獲;
青蛙說話:呱呱;
對於捕獵,他們有共性也有區別:
所以就可以把捕獵聲明為虛方法,基類裡實現共性部分、各子類實現個性部分;
對於說話,完全不同,但是又必須讓他們說話——否則成植物了,呵呵:
所以就可以把說話聲明為抽象方法,基類只聲明此方法來作為約束,強制子類實現。