程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> Java中的接口和籠統類用法實例詳解

Java中的接口和籠統類用法實例詳解

編輯:關於JAVA

Java中的接口和籠統類用法實例詳解。本站提示廣大學習愛好者:(Java中的接口和籠統類用法實例詳解)文章只能為提供參考,不一定能成為您想要的結果。以下是Java中的接口和籠統類用法實例詳解正文


本文實例講述了Java中的接口和籠統類用法。分享給年夜家供年夜家參考,詳細以下:

在面向對象的概念中,我們曉得一切的對象都是經由過程類來描寫的,然則其實不是一切的類都是用來描寫對象的,假如一個類中沒有包括足夠的信息來描寫一個詳細的對象,如許的類就是籠統類。

籠統類常常用來表征我們在對成績范疇停止剖析、 設計中得出的籠統概念,是對一系列看上去分歧,然則實質上雷同的詳細概念的籠統,我們不克不及把它們實例化(拿不出一個詳細的器械)所以稱之為籠統。

好比:我們要描寫“生果”,它就是一個籠統,它有質量、體積等一些個性(生果有質量),但又缺少特征(蘋果、橘子都是生果,它們有本身的特征),我們拿不出獨一一種能代表生果的器械(由於蘋果、橘子都不克不及代表生果),可用籠統類來描寫它,所以籠統類是不克不及夠實例化的。當我們用某個類來詳細描寫“蘋果”時,這個類便可以繼續描寫“生果”的籠統類,我們都曉得“蘋果”是一種“生果”。

在面向對象范疇,籠統類重要用來停止類型隱蔽。我們可以結構出一個固定的一組行動的籠統描寫,然則這組行動卻可以或許有隨意率性個能夠的詳細完成方法。這個籠統描寫就是籠統類,而這一組隨意率性個能夠的詳細完成則表示為這個籠統類的一切派生類。

接口和籠統類中的一切籠統辦法不克不及有詳細完成,而應在它們的子類中完成一切的籠統辦法(要有函數體,哪怕{ }裡是空的),Java的設計者能夠為籠統辦法的靈巧性斟酌,每一個子類可依據本身的須要來完成籠統辦法。

籠統類(abstract class)的界說方法以下:

public abstract class AbstractClass //外面至多有一個籠統辦法
{
  public int t; //通俗數據成員
  public abstract void method1(); //籠統辦法,籠統類的子類在類中必需完成籠統類中的籠統辦法
  public abstract void method2();
  public void method3(); //非籠統辦法
  public int method4();
  publi int method4 (){
    …… //籠統類中可以付與非籠統辦法辦法的默許行動,即辦法的詳細完成
  }
  public void method3(){
    …… //籠統類中可以付與非籠統辦法辦法的默許行動,即辦法的詳細完成
  } 
}

接口(interface)的界說方法以下:

public interface Interface
{
  static final int i; //接口中不克不及有通俗數據成員,只可以或許有靜態的不克不及被修正的數據成員,static表現全局,final表現弗成修正,可以不消static final 潤飾,會隱式的聲明為static和final
  public void method1(); //接口中的辦法必定是籠統辦法,所以不消abstract潤飾
  public void method2(); //接口中不克不及付與辦法的默許行動,即不克不及無方法的詳細完成
}

簡言之籠統類是一種功效不全的類,接口只是一個籠統辦法聲明和靜態不克不及被修正的數據的聚集,二者都不克不及被實例化。

從某種意義上說,接口是一種特別情勢的籠統類,在Java說話中籠統類表現的是一種繼續關系,一個類只能繼續繼續一個籠統類,而一個類卻可以完成多個接口。在很多情形下,接口確切可以取代籠統類,假如你不須要銳意表達屬性上的繼續的話。

進一步懂得,關於Java引入籠統類、接口的目標,向高手就教獲得的回答以下:

1、從類的條理構造上看,籠統類是在條理的頂端,但在現實的設計傍邊,普通來講籠統類應該是前面才會湧現。為何?現實上籠統類的獲得有點像數學中的提取公因式:ax+bx,x就是籠統類,假如你沒有後面的式子,你怎樣曉得x是否是公因式呢?在這點上,也相符人們熟悉世界的進程,先詳細後籠統。是以在設計進程中假如你獲得年夜量的詳細概念並從傍邊找到其個性時,這個個性的聚集就是籠統類應該是沒錯的。

2、interface從外面上看,和籠統類很類似,但用法完整分歧。它的根本功效就是把一些絕不相干的類(概念)聚集在一路構成一個新的、可集中操作的“新類”。我給先生的一個典范例子就是“司機”。誰可以當司機?誰都可以,只需支付了駕照。所以我不論你是先生,白領、藍領照樣老板,只需有駕照就是司機。

interface DriverLicence { 
Licence getLicence(); 
}
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 {
setDriver(DriverLicence driver);
}

這時候候,Car的對象其實不關懷這個司機究竟是干甚麼的,他們的獨一配合點是支付了駕照(都完成了DriverLicence接口)。這個,應該是接口最壯大的處所也是籠統類沒法比較的。

總結:

籠統類是提取詳細類的公因式,而接口是為了將一些不相干的類“雜湊”成一個配合的群體。平日我們日常平凡養成優越的習氣就是多用接口,究竟Java是單繼續,不像C++,然則在須要應用籠統類的時刻必定照樣要用的(有點相似goto的用法),呵呵。

願望本文所述對年夜家Java法式設計有所贊助。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved