欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

java的面向?qū)ο笫鞘裁?/h1>

本篇文章給大家分享的是有關(guān)java的面向?qū)ο笫鞘裁矗【幱X(jué)得挺實(shí)用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說(shuō),跟著小編一起來(lái)看看吧。

創(chuàng)新互聯(lián)專注于企業(yè)全網(wǎng)整合營(yíng)銷推廣、網(wǎng)站重做改版、平陽(yáng)網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、成都h5網(wǎng)站建設(shè)、商城網(wǎng)站建設(shè)、集團(tuán)公司官網(wǎng)建設(shè)、外貿(mào)網(wǎng)站制作、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁(yè)設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為平陽(yáng)等各大城市提供網(wǎng)站開(kāi)發(fā)制作服務(wù)。

11、接口(interface)

引入:抽象類是從多個(gè)類中抽象出來(lái)的模板,若要將這種抽象進(jìn)行得更徹底,就得用到一種特殊的“抽象類”→ 接口;

例子:

生活中聽(tīng)說(shuō)過(guò)的USB接口其實(shí)并不是我們所看到的那些插槽,而是那些插槽所遵循的一種規(guī)范;而我們看到的那些插槽是根據(jù)USB規(guī)范設(shè)計(jì)出來(lái)的實(shí)例而已,也就說(shuō)插槽是USB的實(shí)例;

對(duì)應(yīng)不同型號(hào)的USB設(shè)備而言,他們各自的USB插槽都需要遵循一個(gè)規(guī)范,遵守這個(gè)規(guī)范就可以保證插入插槽的設(shè)備能與主板正常通信;

對(duì)于同一種型號(hào)的主板上的多個(gè)USB插槽,他們有相同的數(shù)據(jù)交換方式,相同的實(shí)現(xiàn)細(xì)節(jié),可認(rèn)為他們都是同一個(gè)類的不同實(shí)例

我的總結(jié):

接口只定義了類應(yīng)當(dāng)遵循的規(guī)范,卻不關(guān)心這些類的內(nèi)部數(shù)據(jù)和其方法內(nèi)的實(shí)現(xiàn)細(xì)節(jié).

接口只規(guī)定了這些類里必須提供的方法;從而分離了規(guī)范和實(shí)現(xiàn).增強(qiáng)了系統(tǒng)的可拓展性和維護(hù)性;

使用接口的好處,拓展性,維護(hù)性更好,所以我們?cè)陂_(kāi)發(fā)中會(huì)經(jīng)常用到接口.(相當(dāng)于定義了一種標(biāo)準(zhǔn))

interface定義

接口定義一種規(guī)范,規(guī)定一個(gè)類必須做什么,但它不管如何具體去做;

[修飾符] interface 接口名 extends 父接口1,父接口2....

沒(méi)有構(gòu)造方法,不能實(shí)例化;

接口只能繼承接口,不能繼承類

接口里沒(méi)有普通方法,方法全是抽象的;

接口里的方法默認(rèn)修飾符是public abstract;

接口里的字段全是全局常量,默認(rèn)修飾符是public static final;

接口里的成員包括(主要是前兩個(gè)):

全局常量

公共的抽象方法

內(nèi)部類(包括內(nèi)部類,內(nèi)部接口,內(nèi)部枚舉類);

我的總結(jié):

接口沒(méi)有構(gòu)造方法,不能實(shí)例化!

接口里的方法全部是抽象的,沒(méi)有普通方法,有默認(rèn)的修飾符 public abstract,必須全部覆寫!

12、接口的使用

格式:public class SubImpl  extends Super  implements IA,IB

接口可以多繼承,但是只能繼承接口,不能繼承類。

實(shí)現(xiàn)接口(支持多實(shí)現(xiàn))

[修飾符] class 類名 implements 接口1,接口2...

接口的實(shí)現(xiàn)必須在 extends 之后;

實(shí)現(xiàn)接口的方法必須是 public 類型

接口與類之間的關(guān)系:

實(shí)現(xiàn)關(guān)系或者說(shuō)是繼承關(guān)系.

可以說(shuō)類實(shí)現(xiàn)了接口的方法,也可以說(shuō)類繼承了接口的方法,不同情況下不同的理解!

13、面向接口編程之制定標(biāo)準(zhǔn)和簡(jiǎn)單工廠模式

制定一個(gè)標(biāo)準(zhǔn),讓別人去實(shí)現(xiàn)或者說(shuō)滿足它!

Eg:
interface USB{//定義USB標(biāo)準(zhǔn)
    void useUSB();//USB有使用USB的行為
}

簡(jiǎn)單工廠模式

構(gòu)建一個(gè)工廠出來(lái),在里面進(jìn)行生產(chǎn),用的時(shí)候直接拿

我的總結(jié):

好處:屏蔽不同子類實(shí)現(xiàn)的差異,提高代碼的可拓展性和可維護(hù)性;

package reviewDemo;
 
//簡(jiǎn)單工廠模式
 
 
 
interface Phone{//制定標(biāo)準(zhǔn),都要實(shí)現(xiàn)send()方法
 
   public void send();
 
}
 
 
 
class Iphone implements Phone{
 
   @Override
 
   public void send() {
 
      System.out.println("Iphone手機(jī)在發(fā)短信");
 
   }
 
}
 
 
 
class AndroidPhone implements Phone{
 
   @Override
 
   public void send() {
 
      System.out.println("AndroidPhone手機(jī)在發(fā)短信");
 
   }
 
}
 
 
 
class MyPhone implements Phone{
 
   @Override
 
   public void send() {
 
      System.out.println("MyPhone手機(jī)在發(fā)短信");
 
   }
 
}
 
 
 
class Factory{
 
   public static void show(String type){//傳入?yún)?shù),根據(jù)不同的類型個(gè)性化定制
 
      if(type.equals("")){//為空的情況,不用往下執(zhí)行
 
         System.out.println("對(duì)不起,類型為空!,請(qǐng)重新輸入!");
 
         return;
 
      }
 
      Phone p = null;
 
      if("Iphone".equals(type)){//判斷類型
 
         p = new Iphone();
 
      }else if("AndroidPhone".equals(type)){
 
         p = new AndroidPhone();
 
      }else{
 
         p = new MyPhone();
 
      }
 
      p.send();
 
   }
 
}
 
 
 
public class FactoryDemo17 {
 
   public static void main(String[] args) {
 
     
 
      new Factory().show("Iphone");//調(diào)用方法
 
      new Factory().show("AndroidPhone");
 
      new Factory().show("MyPhone");
 
      new Factory().show("YourPhone");
 
      new Factory().show("");
 
   }
 
}

輸出:

Iphone手機(jī)在發(fā)短信

AndroidPhone手機(jī)在發(fā)短信

MyPhone手機(jī)在發(fā)短信

MyPhone手機(jī)在發(fā)短信

對(duì)不起,類型為空!

14、面向接口編程之適配器模式

使用一個(gè)現(xiàn)成的類,但是它的接口不完全符合你的需求,我只想要它其中的一個(gè)方法,不想覆寫其他的方法。

比如,窗體有變大,變小,關(guān)閉的行為,但是我現(xiàn)在只需要關(guān)閉行為;

package reviewDemo;
 
//適配器模式:只想用其中的某一個(gè)方法,用適配器作為中間的過(guò)渡
 
 
 
interface Windows{
 
   void max();
 
   void min();
 
   void close();
 
}
 
 
 
//適配器模式,實(shí)現(xiàn)接口所有的方法,但是不寫方法體!
 
class AdapterWindows implements Windows{
 
 
 
   @Override
 
   public void max() {
 
   }
 
 
 
   @Override
 
   public void min() {
 
   }
 
 
 
   @Override
 
   public void close() {
 
   }
 
  
 
}
 
 
 
class MyWindows extends AdapterWindows{
 
   //覆寫父類的方法
 
   public void close(){
 
      System.out.println("這個(gè)實(shí)現(xiàn)的是關(guān)閉功能!");
 
   }
 
}
 
 
 
public class Demo17 {
 
   public static void main(String[] args) {
 
      new MyWindows().close();
 
   }
 
}

接口和抽象類的比較

相同點(diǎn):

都位于繼承的頂端,用于被其他實(shí)現(xiàn)或繼承;

都不能實(shí)例化;

都包含抽象方法,其子類都必須覆寫這些抽象方法;

區(qū)別:

抽象類為部分方法提供實(shí)現(xiàn),避免子類重復(fù)實(shí)現(xiàn)這些方法,提供代碼重用性;接口只能包含抽象方法;

一個(gè)類只能繼承一個(gè)直接父類(可能是抽象類),卻可以實(shí)現(xiàn)多個(gè)接口;(接口彌補(bǔ)了Java的單繼承)

二者的選用:

優(yōu)先選用接口,盡量少用抽象類;

需要定義子類的行為,又要為子類提供共性功能時(shí)才選用抽象類;

總結(jié):接口不能有構(gòu)造函數(shù),抽象類是可以有構(gòu)造函數(shù)的,

abstract可以定義構(gòu)造函數(shù)(包括帶函數(shù)的構(gòu)造函數(shù)),因?yàn)橐WC其子類在創(chuàng)建的時(shí)候能夠進(jìn)行正確的初始化,但是Abstract類不能被實(shí)例化。

知識(shí)點(diǎn):如果不可以或者沒(méi)有創(chuàng)建對(duì)象,那么我們必須加上static修飾,不能用對(duì)象調(diào)用,就只好用類去調(diào)用。

16、匿名內(nèi)部類

適合只使用一次的類

不能是抽象類,因?yàn)橄到y(tǒng)在創(chuàng)建匿名內(nèi)部類的時(shí)候,會(huì)立即創(chuàng)建匿名內(nèi)部類的對(duì)象。

匿名內(nèi)部類不能定義構(gòu)造器,因?yàn)槟涿麅?nèi)部類沒(méi)有類名。

格式:
new 父類構(gòu)造器([實(shí)參列表]) 或 接口()
{
//匿名內(nèi)部類的類體部分
}

17、枚舉類

使用enum聲明,默認(rèn)直接繼承了java.lang.Enum類,而不是Object類;

枚舉類的對(duì)象是固定的,實(shí)例個(gè)數(shù)有限,不可以再new( ),枚舉對(duì)象后可以跟()。

枚舉元素必須位于枚舉類體中的最開(kāi)始部分,枚舉元素后要有分號(hào)與其他成員分隔。

枚舉類的構(gòu)造方法的權(quán)限修飾符默認(rèn)是private;

一旦枚舉對(duì)象后面加上{},那么該對(duì)象實(shí)際是枚舉匿名內(nèi)部類對(duì)象;

所有枚舉類都提供一個(gè)靜態(tài)的values()方法(返回該枚舉類所有對(duì)象組成的數(shù)組),便于遍歷所有枚舉對(duì)象;

所有枚舉類都提供一個(gè)靜態(tài)的valueOf(String name)方法, 返回枚舉類中對(duì)象名等于 name的對(duì)象。

Eg:public enum Color{
 
        RED(), GREEN(){}, BLUE{};
 
}
 
 
 
 
 
package reviewDemo;
 
//枚舉
 
 
 
enum Color{
 
   Green,Blue,Yellow;
 
  
 
   @Override
 
   public String toString() {
 
      String ret = super.toString();
 
      switch (this) {
 
      case Green:
 
         ret = "綠色";
 
         break;
 
        
 
      case Blue:
 
         ret = "藍(lán)色";
 
         break;
 
        
 
      case Yellow:
 
         ret = "黃色";
 
         break;
 
 
 
      default:
 
         break;
 
      }
 
     
 
      return ret;
 
   }
 
  
 
}
 
 
 
class Personp{
 
   Color c = Color.Blue;
 
   void show(){
 
      System.out.println(c);
 
   }
 
}
 
 
 
public class Demo18 {
 
   public static void main(String[] args) {
 
      Color []color = Color.values();
 
      for (Color c : color) {
 
         System.out.println(c);
 
      }
 
      new Personp().show();
 
   }
 
}

輸出:

綠色

藍(lán)色

黃色

藍(lán)色

枚舉類覆寫接口抽象方法的兩種方式:

在枚舉類中實(shí)現(xiàn)接口的抽象方法;

在枚舉匿名內(nèi)部類中實(shí)現(xiàn)接口的抽象方法;

interface I{
 
    void show();
 
}
 
 
 
enum Color implements I{
 
    RED(){
 
   public void show(){
 
        }
 
    }, GREEN{
 
   public void show(){
 
        }
 
    }, BLUE{
 
   public void show(){
 
        }
 
    };
 
}
 
 
 
enum Color implements I{
 
    RED(), GREEN, BLUE;
 
    public void show() {
 
    }
 
}

總結(jié):枚舉不可以new();即便是反射也不可以!

備注:一個(gè)類如果沒(méi)有構(gòu)造方法,那么一定有相對(duì)應(yīng)的某個(gè)方法可以獲取對(duì)象!

以上就是java的面向?qū)ο笫鞘裁?,小編相信有部分知識(shí)點(diǎn)可能是我們?nèi)粘9ぷ鲿?huì)見(jiàn)到或用到的。希望你能通過(guò)這篇文章學(xué)到更多知識(shí)。更多詳情敬請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

本文名稱:java的面向?qū)ο笫鞘裁?/a>
標(biāo)題來(lái)源:
http://chinadenli.net/article12/jhhpdc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供標(biāo)簽優(yōu)化網(wǎng)站設(shè)計(jì)公司、云服務(wù)器、網(wǎng)站策劃、網(wǎng)站營(yíng)銷App開(kāi)發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

搜索引擎優(yōu)化