公共抽象類
Ⅰ 抽象類和普通類有哪些區別(具體點)
1.
c++沒有abstract.
vc提供了一個interface
2.
抽象類就是指不能實例化的類,因為它們包含了純虛方法。
3.
虛函數是在申明的時候用了關鍵字virtual的類的(非靜態)成員函數
Ⅱ 這個c#程序上來定義了一個公共的抽象類,這定不定義為抽象有什麼區別啊
抽象類中允許有抽象方法。
抽象方法是只有方法聲明,而沒有具體方法體的方法,其方法體留待非抽象子類實現。
非抽象類則不允許有抽象方法。
Ⅲ 定義一個抽象類abstracttest,其中有一個公共的抽象方法dispmessage()。然後定義此
abstract class AbstractTest {
public abstract void dispMessage();
}
class StudentTest extends AbstractTest {
private String name;
private String id;
private int score;
public StudentTest() {
}
public StudentTest(String name, String id, int score) {
this.name = name;
this.id = id;
this.score = score;
}
public void dispMessage() {
System.out.printf("%s %s: %d\n", name, id, score);
}
}
Ⅳ 「抽象類」和「介面」的區別是什麼
「抽象類」和「介面」的區別如下:
1、抽象類和介面都不能直接實例化,如果要實例化,抽象類變數必須指向實現所有抽象方法的子類對象,介面變數必須指向實現所有介面方法的類對象。
2、抽象類要被子類繼承,介面要被類實現。
3、介面只能做方法申明,抽象類中可以做方法申明,也可以做方法實現
4、介面里定義的變數只能是公共的靜態的常量,抽象類中的變數是普通變數。
5、抽象類里的抽象方法必須全部被子類所實現,如果子類不能全部實現父類抽象方法,那麼該子類只能是抽象類。同樣,一個實現介面的時候,如不能全部實現介面方法,那麼該類也只能為抽象類。
6、抽象方法只能申明,不能實現,介面是設計的結果
,抽象類是重構的結果
7、抽象類里可以沒有抽象方法
8、如果一個類里有抽象方法,那麼這個類只能是抽象類
9、抽象方法要被實現,所以不能是靜態的,也不能是私有的。
10、介面可繼承介面,並可多繼承介面,但類只能單根繼承。
如果你擁有一些方法並且想讓它們中的一些有默認實現,那麼使用抽象類吧。
如果你想實現多重繼承,那麼你必須使用介面。由於Java不支持多繼承,子類不能夠繼承多個類,但可以實現多個介面。因此你就可以使用介面來解決它。
如果基本功能在不斷改變,那麼就需要使用抽象類。如果不斷改變基本功能並且使用介面,那麼就需要改變所有實現了該介面的類。
(4)公共抽象類擴展閱讀:
抽象類:
抽象類是用來捕捉子類的通用特性的
。它不能被實例化,只能被用作子類的超類。抽象類是被用來創建繼承層級里子類的模板。
介面:
介面是抽象方法的集合。如果一個類實現了某個介面,那麼它就繼承了這個介面的抽象方法。這就像契約模式,如果實現了這個介面,那麼就必須確保使用這些方法。介面只是一種形式,介面自身不能做任何事情。
資料資料:網路-Java
Ⅳ java中,抽象類中的方法默認是公共的還是友好的
友好的
Ⅵ 為什麼抽象類 方法實現時必須是public的
不知抄道你明白public和private的區別不。
如果你連這都不明白就更沒法說了。
抽象類中的方法是抽象方法。只定義方法而不去具體實現。
肯定需要另一個類來實現這些抽象的方法。這點明白?
那麼,即然需要另一個類來實現,那麼首先是需要肯定這是方法是必須可訪問的。即:public.
Ⅶ 什麼是抽象類抽象類有什麼作用
抽象類往往用來表徵對問題領域進行分析、設計中得出的抽象概念,是對一系列看上去不同,但是本質上相同的具體概念的抽象。
作用:通常在編程語句中用 abstract 修飾的類是抽象類。在C++中,含有純虛擬函數的類稱為抽象類,它不能生成對象;在java中,含有抽象方法的類稱為抽象類,同樣不能生成對象。
抽象類裡面可以有非抽象方法但介面里只能有抽象方法 聲明方法的存在而不去實現它的類被叫做抽像類(abstract class),它用於要創建一個體現某些基本行為的類,並為該類聲明方法,但不能在該類中實現該類的情況。
不能創建abstract 類的實例。然而可以創建一個變數,其類型是一個抽像類,並讓它指向具體子類的一個實例。不能有抽像構造函數或抽像靜態方法。Abstract 類的子類為它們父類中的所有抽像方法提供實現,否則它們也是抽像類為。
(7)公共抽象類擴展閱讀:
在使用抽象類時需要注意幾點:
1、抽象類不能被實例化,實例化的工作應該交由它的子類來完成,它只需要有一個引用即可。
2、抽象方法必須由子類來進行重寫。
3、只要包含一個抽象方法的抽象類,該方法必須要定義成抽象類,不管是否還包含有其他方法。
4、抽象類中可以包含具體的方法,當然也可以不包含抽象方法。
5、子類中的抽象方法不能與父類的抽象方法同名。
6、abstract不能與final並列修飾同一個類。
7、abstract不能與private、static、final或native並列修飾同一個方法。
Ⅷ 想知道公共抽象類和內部抽象類的區別在哪裡
#include<math.h> class container { protected:double radius; public: container(double radius) { container::radius=radius; } virtual double surface_area()=1; virtual double volume()=1; };
Ⅸ 抽象類和具體類有何異同
面向對象是對介面編程,不是對實現編程。抽象類定義了介面,至於怎麼實現,調用者專已經不用屬關心了。
相當於提供了一種特定類的使用規范,其中一部分是公共的,能夠使該類正常運轉並提供外部介面,它與介面的區別也就在與此;另一部分由虛函數組成,供子類繼承實現。這樣做的好處是只要實現自己需要的部分,就可以自動運轉,沒有關聯。
簡單的說,抽象類就是含有純虛函數的類,這是它的定義。
從功能上來講,抽象類定義了一個介面,即方法調用規約,派生類實現具體的規約。這實際上可以將具體的實現和介面分離開來,從而達到底層細節變化而高層框架不變的需求,通俗一點就是解耦。
Ⅹ 抽象類是什麼意思
抽象方法是必須實現的方法。就象動物都要呼吸。但是魚用鰓呼吸,豬用肺呼內吸。
動物類要有呼吸方法。容怎麼呼吸就是子類的事了。
現在有很多討論和建議提倡用interface代替abstract類,兩者從理論上可以做一般性的混用,但是在實際應用中,他們還是有一定區別的。抽象類一般作為公共的父類為子類的擴展提供基礎,這里的擴展包括了屬性上和行為上的。而介面一般來說不考慮屬性,只考慮方法,使得子類可以自由的填補或者擴展介面所定義的方法,就像JAVA王子所說的事件中的適配器就是一個很好的應用。
用一個簡單的例子,比如說一個教師,我們把它作為一個抽象類,有自己的屬性,比如說年齡,教育程度,教師編號等等,而教師也是分很多種類的,我們就可以繼承教師類而擴展特有的種類屬性,而普遍屬性已經直接繼承了下來。