1樓:匿名使用者
介面類似模版 實現介面需實現介面內所有方法
抽象類是類模版 類似介面 但一般(除c++)物件導向不支援多繼承 所以出現了介面 php java都有介面 c++沒有
介面和抽象類在物件導向程式設計中有什麼作用和意義
2樓:佛光
介面就是如果你某個類要引用這個介面,就必須實現這個介面裡面的所有方法。抽象類abstract就是對物件的抽象方法,其實寫程式跟現實中的生活,行為,很像
java物件導向程式設計題目。要求用抽象類和介面
3樓:匿名使用者
//abstract shape形狀類
public abstract class shape
//rectangle繼承shape類
public class rectangle extends shape
public void setwidth(double width)
public double getheight()
public void setheight(double height)
private double height;
rectangle()
rectangle(double width,double height)
public double area()
public double perimeter()
}//circle類繼承抽象類shape
public class circle extends shape
circle(double radius)
public double getradius()
public void setradius(double radius)
public double area()
public double perimeter()
}/********類繼承抽象類shape
public class ******** extends shape
********(double di,double high)
public double getdi()
public void setdi(double di)
public double gethigh()
public void sethigh(double high)
public double area()
public double perimeter()
}//定義介面shape
public inte***ce shape
//rectangle類實現介面shape
public class rectangle implements shape
public void setwidth(double width)
public double getheight()
public void setheight(double height)
private double height;
rectangle()
rectangle(double width,double height)
public double area()
public double perimeter()
}//circle類實現介面shape
public class circle implements shape
circle(double radius)
public double getradius()
public void setradius(double radius)
public double area()
public double perimeter()
}//********類實現介面shape
public class ******** implements shape
********(double di,double high)
public double getdi()
public void setdi(double di)
public double gethigh()
public void sethigh(double high)
public double area()
public double perimeter()
}//測試類shapetest
public class shapetest
//定義靜態列印方法
public static void print(object object)
}//列印結果
c1的面積:28.26 c2的面積28.26
c1的周長:18.84 c2的周長18.84
s1的面積:9.0 s2的面積25.0
s1的周長:12.0 s2的周長20.0
t1的面積:15.0 t2的面積6.0
t1的周長:15.0 t2的周長6.0
java中抽象類的作用是什麼?
4樓:匿名使用者
通過繼承它實現多型,後期繫結,可以為將來要實現的東西做好介面,實現重用性,
例如:abstract class a
class b extends a
}class c extends a
}public class test
public static void dosomething(a a)
}//這個例子只是抽象類的最基本的設計模式,和介面差不多
5樓:將軍抽大雞瓷
抽象類比較像普通類和介面的結合,因為抽象類可以像普通類那樣在類中實現方法,也可以像介面一樣,只宣告,不實現。下面的一個抽象類的例項:
public abstract class traveltool抽象類可以有抽象方法,如果它的子類是抽象類,那麼子類不必實現抽象類的抽象方法;如果子類不是抽象類,那麼子類必須實現抽象類的抽象方法。需要注意的是,不能例項化抽象類物件。若子類為非抽象類那麼子類可以例項化物件。
如果你還是不太明白抽象類。你可以上秒秒學瞭解下,上面說的比較形象。
6樓:暗影之王
在物件導向方法中,抽象類主要用來進行型別隱藏。構造出一個固定的一組行為的抽象描述,但是這組行為卻能夠有任意個可能的具體實現方式。這個抽象描述就是抽象類,而這一組任意個可能的具體實現則表現為所有可能的派生類。
模組可以操作一個抽象體。由於模組依賴於一個固定的抽象體,因此它可以是不允許修改的;
通過從這個抽象體派生,也可擴充套件此模組的行為功能。為了能夠實現物件導向設計的一個最核心的原則ocp(open-closed principle),抽象類是其中的關鍵所在。
抽象類往往用來表徵對問題領域進行分析、設計中得出的抽象概念,是對一系列看上去不同,但是本質上相同的具體概念的抽象。
7樓:匿名使用者
子類繼承抽象類後必須實現父類中的抽象方法。
如分頁 分頁父類basicpage 父類中有個addparameter的方法。如果你建一個***page的話它繼承了basicpage ,那麼他必須加上addparameter的方法,否則報錯。
8樓:匿名使用者
主要就是為了繼承。
真正使用的時候,抽象類用的並不是很多,用的最多的是藉口,但是換句話說,藉口也是一種抽象類。
9樓:線曉絲介旺
/.out,自己思考
a?dosomething(c);do
b"dosomething(a1),比如用cc做引數,實現重用性;/}
class
bextendsa}
/,用抽象類;
/doc".println("}}
public
class
test
public
static
void
dosomething(aa)}
class
cextendsa{
public
void
dosomething()
{system
java中的抽象類和介面該怎麼理解 ?定義上有什麼區別?通常分別有什麼作用?
10樓:匿名使用者
在物件導向的概念中,我們知道
所有的物件都是通過類來描繪的,但是並不是所有的類都是用來描繪物件的,如果一個類中沒有包含足夠的資訊來描繪一個具體的物件,這樣的類就是抽象類。
抽象類往往用來表徵我們在對問題領域進行分析、 設計中得出的抽象概念,是對一系列看上去不同,但是本質上相同的具體概念的抽象,我們不能把它們例項化(拿不出一個具體的東西)所以稱之為抽象。
比如:我們要描述「水果」,它就是一個抽象,它有質量、體積等一些共性(水果有質量),但又缺乏特性(蘋果、橘子都是水果,它們有自己的特性),我們拿不出唯一一種能代表水果的東西(因為蘋果、橘子都不能代表水果),可用抽象類來描述它,所以抽象類是不能夠例項化的。當我們用某個類來具體描述「蘋果」時,這個類就可以繼承描述「水果」的抽象類,我們都知道「蘋果」是一種「水果」。
在物件導向領域,抽象類主要用來進行型別隱藏。我們可以構造出一個固定的一組行為的抽象描述,但是這組行為卻能夠有任意個可能的具體實現方式。這個抽象描述就是抽象類,而這一組任意個可能的具體實現則表現為這個抽象類的所有派生類。
介面和抽象類中的所有抽象方法不能有具體實現,而應在它們的子類中實現所有的抽象方法(要有函式體,哪怕裡是空的),java的設計者可能為抽象方法的靈活性考慮,每個子類可根據自己的需要來實現抽象方法。
抽象類(abstract class)的定義方式如下:
public abstract class abstractclass //裡面至少有一個抽象方法
public void method3()
} 介面(inte***ce)的定義方式如下:
public inte***ce inte***ce
簡言之抽象類是一種功能不全的類,介面只是一個抽象方法宣告和靜態不能被修改的資料的集合,兩者都不能被例項化。
從某種意義上說,介面是一種特殊形式的抽象類,在java語言中抽象類表示的是一種繼承關係,一個類只能繼承繼承一個抽象類,而一個類卻可以實現多個介面。在許多情況下,介面確實可以代替抽象類,如果你不需要刻意表達屬性上的繼承的話。
進一步理解,關於java引入抽象類、介面的目的,向高手請教得到的答覆如下:
1、從類的層次結構上看,抽象類是在層次的頂端,但在實際的設計當中,一般來說抽象類應當是後面才會出現。為什麼?實際上抽象類的獲取有點像數學中的提取公因式:
ax+bx,x就是抽象類,如果你沒有前面的式子,你怎麼知道x是不是公因式呢?在這點上,也符合人們認識世界的過程,先具體後抽象。因此在設計過程中如果你得到大量的具體概念並從當中找到其共性時,這個共性的集合就是抽象類應當是沒錯的。
2、inte***ce從表面上看,和抽象類很相似,但用法完全不同。它的基本功能就是把一些毫不相關的類(概念)集合在一起形成一個新的、可集中操作的「新類」。我給學生的一個典型例子就是「司機」。
誰可以當司機?誰都可以,只要領取了駕照。所以我不管你是學生,白領、藍領還是老闆,只要有駕照就是司機。
inte***ce driverlicence
class studentdriver extends student implements driverlicence
class whtiecollaremployeedriver extends whtiecollaremployee implements driverlicence
class bluecollaremployeedriver extends bluecollaremployee implements driverlicence
class bossdriver extends boss implements driver
當我定義了「汽車」類後,我就可以指定「司機」了。
class car
這時候,car的物件並不關心這個司機到底是幹什麼的,他們的唯一共同點是領取了駕照(都實現了driverlicence介面)。這個,應當是介面最強大的地方也是抽象類無法比擬的。
總結:抽象類是提取具體類的公因式,而介面是為了將一些不相關的類「雜湊」成一個共同的群體。通常我們平時養成良好的習慣就是多用介面,畢竟java是單繼承,不像c++,但是在需要使用抽象類的時候一定還是要用的(有點類似goto的用法),呵呵。
java中的介面和抽象類
c抽象類和介面的區別,抽象類和介面的區別是什麼?
1抽象類 1 抽象方法只作宣告,而不包含實現,可以看成是沒有實現體的虛方法 2 抽象類不能被例項化 3 抽象類可以但不是必須有抽象屬性和抽象方法,但是一旦有了抽象方法,就一定要把這個類宣告為抽象類 4 具體派生類必須覆蓋基類的抽象方法 5 抽象派生類可以覆蓋基類的抽象方法,也可以不覆蓋。如果不覆蓋,...
C中抽象類和介面的區別,java中抽象類和介面的區別?
c 一 抽象類 抽象類是特殊的類,只是不能被例項化 除此以外,具有類的其他特性 重要的是抽象類可以包括抽象方法,這是普通類所不能的。抽象方法只能宣告於抽象類中,且不包含任何實現,派生類必須覆蓋它們。另外,抽象類可以派生自一個抽象類,可以覆蓋基類的抽象方法也可以不覆蓋,如果不覆蓋,則其派生類必須覆蓋它...
java中介面和抽象類的區別是什麼
定義的關鍵字 abstract class inte ce 組成 常量,變數,抽象方法,普通方法,構造方法 全域性常量,抽象方法 許可權 可以是各種許可權 只能是public 關係 抽象類可以實現多個介面 介面不能實現抽象類 使用 子類利用extends 子類利用implements實現介面 涉及的...