java物件導向第四章

來源:互聯網
上載者:User

標籤:tor   修飾符   靜態方法   技術   method   override   tty   rgs   eth   

一、 介面的基礎知識

1、為什麼需要介面

為解決實際應用中,單一繼承無法解決的問題

 

2、什麼是介面

a)   基本概念?

介面是一種特殊的抽象類別

介面是一種規範和標準,可以約束類的行為,是一些方法特徵集合,但方法沒有方法體

 

b)   基本文法

存取修飾詞 interface 介面名{

                           //定義 方法(沒有方法體),方法的存取修飾詞預設為public

                           //定義 屬性(預設是公用的靜態常量)

                                                           資料類型 常量名=值;

}

存取修飾詞只能為public和預設的

c)   注意事項?

1.介面命名,介面字必須和檔案名稱相同

2.介面中的方法沒有方法體

3.介面中的屬性名稱必須大寫,且要賦值

4.介面不能執行個體化,沒有構造方法

5.介面支援多重繼承,一個介面可以繼承多個介面,但不能繼承類

6.介面中的方法,必須被所有實現介面的類具體實現

public abstract class Handest {        private String brand;    //品牌        private String type;    //型號                public String getBrand() {            return brand;        }                public Handest(String brand,String type) {        //有參構造方法            this.brand = brand;            this.type=type;        }                public String getType() {            return type;        }                        public abstract void print();        public abstract void function();}父類
父類
public interface Network {    void surf();        //上網}
//介面2public interface PlayWiring {    void play();        //播放功能}
//介面3public interface TakePictures {    void takePictures();        //拍照}
//介面4public interface VideoCall {        void visualTelephone();        //視頻電話}
public class AptitudeHandset extends Handest implements PlayWiring,Network,TakePictures,VideoCall {    public AptitudeHandset(String brand, String type) {        super(brand, type);            }    @Override    public void visualTelephone() {                System.out.println("開始視訊通話......");    }    @Override    public void takePictures() {                System.out.println("哢嚓......拍照成功");    }    @Override    public void surf() {                System.out.println("已啟動移動網路......");    }    @Override    public void play() {               System.out.println("開始播放視頻《小時代》......");        }    @Override    public void print() {                System.out.println("這是一款型號為"+super.getType()+"的"+super.getBrand()+"手機:");    }    @Override    public void function() {                System.out.println("發送帶圖片與文字的資訊......");    }    }子類
子類
public static void main(String [] args){                AptitudeHandset a=new AptitudeHandset("I9100","HTC");        a.print();        a.surf();        a.play();        a.takePictures();        a.function();        a.visualTelephone();    }測試類別
測試類別

3、一個類如何?介面

class 類名 implements 介面名{

  //必須對介面中的方法,具體實現

}

4、一個類如何繼承另外一個類,且同時實現一個介面【變相的讓1個類實現多重繼承】

class 子類名 extends 父類名 implements 介面1,…介面n{

 

}

5、介面的好處?

介面體現了約定和實現相分離的原則

彌補了Java類單一繼承的不足,有利於代碼的擴充和維護

6、       抽象類別和介面的異同點?【常見筆試題】

相同點

  1. 1.  二者都不可以執行個體化
  2. 2.  二者都包含抽象方法,必須被非抽象的子類重寫或實現
  3. 3.  二者都可以用來實現多態

 

不同點:

1、 抽象類別只能單一繼承,而介面可以支援多重繼承

2、 抽象類別中除抽象方法外,還可以有非抽象的方法;介面中的方法只能是抽象方法

3、 抽象類別可以有構造方法,介面沒有

4、 抽象類別中的變數可以不賦值,介面中的變數必須賦值

5、 抽象類別中可以定義靜態方法,介面不可以

public abstract class Pet {        private String name;            private int  health;        private int  love;                public Pet(String name,int health,int love){            this.name=name;            this.health=health;            this.love =love;        }        public String getName() {            return name;        }                public int getHealth() {            return health;        }                public int getLove() {            return love;        }                public abstract void print();}父類
父類
//介面1public interface Eatable {    void eat();        //吃飯}
//介面2public interface FlyingCatchable {    void catchingFly();        //接飛盤}
public class Dog1 extends Pet implements Eatable,FlyingCatchable{    public Dog1(String name, int health, int love) {        super(name, health, love);        // TODO Auto-generated constructor stub    }    @Override    public void print() {        // TODO Auto-generated method stub        System.out.println("我叫"+super.getName()+",健康值是:"+super.getHealth()+",與主人的親密度為:"+super.getLove()+"。");    }    @Override    public void catchingFly() {        // TODO Auto-generated method stub        System.out.println("我正在和主人玩飛盤!");    }    @Override    public void eat() {        // TODO Auto-generated method stub        System.out.println("我正在吃飯!");    }}子類
子類
public class PetText {    public static void main(String [] args){        Dog1 d=new Dog1("好好",90 ,95);        d.print();        d.eat();        d.catchingFly();            }

二、  面向介面編程

1、介面表示一種能力

2、介面表示一種約定

3、面向介面編程的好處?

a)   實現介面和實現的分離

b)   可以降低代碼間的耦合性

c)   提高程式的可擴充性和可維護性

java物件導向第四章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.