JAVA接口與抽象類怎么使用

本篇內(nèi)容介紹了“JAVA接口與抽象類怎么使用”的有關(guān)知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠?qū)W有所成!

為慶元等地區(qū)用戶提供了全套網(wǎng)頁設計制作服務,及慶元網(wǎng)站建設行業(yè)解決方案。主營業(yè)務為成都網(wǎng)站制作、網(wǎng)站設計、慶元網(wǎng)站設計,以傳統(tǒng)方式定制建設網(wǎng)站,并提供域名空間備案等一條龍服務,秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務。我們深信只要達到每一位用戶的要求,就會得到認可,從而選擇與我們長期合作。這樣,我們也可以走得更遠!

JAVA接口與抽象類怎么使用

接口

概述

  1. 當需要從幾個類中派生出一個類,繼承他們所有的屬性和方法,JAVA沒有多重繼承需要用接口實現(xiàn)

  2. 從幾個類中抽取出一些共同的行為特征,而他們之間又沒有is-a的關(guān)系,也需要借助接口實現(xiàn)

  3. 接口本質(zhì)是契約,規(guī)范

使用

  1. 接口中使用interface來定義

  2. 接口和類是兩個不同的結(jié)構(gòu)

  3. 接口中不能定義構(gòu)造器(也就不能實例化)

  4. 接口通過類來實現(xiàn)implements

  5. JAVA類可以實現(xiàn)多個接口格式:class AA extends BB interface CC,DD

  6. 接口與接口之間可以繼承,并且可以多繼承

  7. 接口體現(xiàn)了多態(tài)性

public class UsbTest {
    public static void main(String[] args) {
        Computer com =new Computer();
        Flash flash=new Flash();
        com.transferData(flash); // USB usb =new Flash()
        com.transferData(new Printer());
        /*
		* U盤開始工作
		* 傳輸數(shù)據(jù)
		* U盤結(jié)束工作
		* 打印機開始工作
		* 傳輸數(shù)據(jù)
		* 打印機結(jié)束工作
		* 
		* */
    }}class Computer{
    public void transferData(USB usb){
        usb.start();
        System.out.println("傳輸數(shù)據(jù)");
        usb.stop();
    }}interface USB{
    void start();
    void stop();}class Flash implements USB{

    @Override
    public void start() {
        System.out.println("U盤開始工作");
    }

    @Override
    public void stop() {
        System.out.println("U盤結(jié)束工作");

    }}class Printer implements USB{

    @Override
    public void start() {
        System.out.println("打印機開始工作");

    }

    @Override
    public void stop() {
        System.out.println("打印機結(jié)束工作");

    }}
  1. JDK8的寫法

  • 接口中定義的靜態(tài)方法,只能通過接口調(diào)用

  • 通過實現(xiàn)類的對象,可以實現(xiàn)接口中的默認方法

  • 如果子類(或者實現(xiàn)類)繼承的父類和實現(xiàn)的接口中聲明了同名同參數(shù)方法,如果子類沒有重寫該方法,調(diào)用的是父類中同名同參數(shù)方法

public class JDK8Test {
    public static void main(String[] args) {
        SubClass sub =new SubClass();
        CompareA.methods1();
        sub.methods2();
        /*
        * Compare 北京
		* Compare 上海
        */
    }}class SubClass implements CompareA{}interface CompareA{
    public static void methods1() {
        System.out.println("Compare 北京");
    }
    public default void methods2() {
        System.out.println("Compare 上海");
    }}

代理模式

  1. 代理模式就是為其他對象提供一種代理以控制對這個對象的訪問

  2. 實例

public class NetWorkTest {
    public static void main(String[] args) {
        Server server=new Server();
        ProxyServer proxyServer=new ProxyServer(server); // 放的是被代理對象進去
        proxyServer.browse(); // 調(diào)用的是代理對象,但結(jié)果是真實對象的方法被調(diào)用
        /*
        * 檢查工作
		* 真實服務器訪問網(wǎng)絡
        */
    }}interface NetWork{
    void browse();}// 被代理類class Server implements NetWork{

    @Override
    public void browse() {
        System.out.println("真實服務器訪問網(wǎng)絡");
    }}// 代理類class ProxyServer implements NetWork{
    private NetWork work;
    public ProxyServer(NetWork work){
        this.work=work;
    }
    public void check(){
        System.out.println("檢查工作");
    }

    @Override
    public void browse() {
        check();
        work.browse();
    }}

內(nèi)部類

  1. JAVA允許將一個類A聲明在另一個類B中,則類A是內(nèi)部類,類B是外部類

  2. 內(nèi)部類分類

  • 成員內(nèi)部類

    • 靜態(tài) static

    • 非靜態(tài)

  • 局部內(nèi)部類

    • 方法內(nèi)

    • 代碼塊內(nèi)

    • 構(gòu)造器內(nèi)

  1. 實例化內(nèi)部類對象

public class InnerClassTest {
    public static void main(String[] args) {
        // 實例化Dog,靜態(tài)類
        Pseson.Dog dog=new Pseson.Dog();
        dog.eat();
        // 吃骨頭
        // 實例化Cat,非靜態(tài)類
        Pseson p1 =new Pseson();
        Pseson.Cat cat=p1.new Cat();
        cat.eat();
        // 貓吃魚
    }}class Pseson{
    String name;
    int age;
    public void eat(){
        System.out.println("吃飯");
    }
    static class Dog{
        String name;
        int age;
        public void eat(){
            System.out.println("吃骨頭");
        }
    }
    class Cat{
        public void eat(){
            System.out.println("貓吃魚");
        }
    }}
  1. 調(diào)用外部類結(jié)構(gòu)

public class InnerClassTest {
    public static void main(String[] args) {
        // 實例化Cat,非靜態(tài)類
        Pseson p1 =new Pseson();
        Pseson.Cat cat=p1.new Cat();
        cat.eat();
        cat.display("小花");
        /*
        * 小花
        * 波斯貓
        * 人
        */ 
    }}class Pseson{
    String name="人";
    int age;
    public void eat(){
        System.out.println("吃飯");
    }
    static class Dog{
        String name;
        int age;
        public void eat(){
            System.out.println("吃骨頭");
        }
    }
    class Cat{
        String name="波斯貓";
        public void eat(){
            System.out.println("貓吃魚");
        }
        public void display(String name){
            System.out.println(name); // 方法中name
            System.out.println(this.name); // 內(nèi)部類中name
            System.out.println(Pseson.this.name); // 外部類中name

        }
    }}
  1. 接口與抽象類

  • 相同點:不能實例化;都包含抽象方法;能被繼承

  • 不同點:抽象類有構(gòu)造器,接口沒有構(gòu)造器;抽象類只有單繼承,而接口可以多繼承;抽象類extands繼承,接口implements實現(xiàn)

“JAVA接口與抽象類怎么使用”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實用文章!

標題名稱:JAVA接口與抽象類怎么使用
網(wǎng)站網(wǎng)址:http://muchs.cn/article36/ihcssg.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供Google、面包屑導航商城網(wǎng)站、服務器托管、網(wǎng)站制作、軟件開發(fā)

廣告

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

網(wǎng)站托管運營