最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java中接口的深入詳解

 更新時間:2021年11月28日 11:27:50   作者:執(zhí)久呀  
在Java語言中,接口由類來實現以便使用接口中的方法,這篇文章主要給大家介紹了關于Java中接口的相關資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下

一、前言

前面我們說了抽象類的概述,我們對抽象類也有個認識和理解了,現在我們學習十分重要的內容接口,接口這個詞比較的抽象,但其實也是十分好理解的。

二、接口

簡單的說,接口就是一種被規(guī)范的標準,只要符合這個標準都可以通用,接口的表現在于對行為的抽象。 就好比插座,每個廠商生產的插座我們都可以用,這是因為他們有同一個標準,這里插座就是接口。

接口的格式

格式1:

public interface 接口名

格式2:

interface? 接口名

三、接口的特點

①多態(tài)的實例化用implement關鍵字

public  interface usb{}//定義一個接口
 
public  class  computer implements  usb{}//創(chuàng)建一個類實現接口

②接口不能被直接實例化,可以通過多態(tài)的形式實現實例化

usb  u =new computer();

③接口中都是抽象方法和常量,不可能有非抽象方法,常量必須被賦值。

常量默認被public? static final

方法默認被public static? ?abstractl修飾

public final int  num1=10;√
num1=20;×
int num2=10;√
num2=20;×
上面兩個正確的寫法等價
public  abstract  void method1();√
void  method2();√

直接int num=10,創(chuàng)建的a是常量

④多態(tài)的前提:

有繼承或實現關系

有方法的重寫,

有父類或父接口引用指向子類或實現類對象

⑤接口的實現類

必須重寫接口中的所有方法,不想重寫則可以是抽象類(加上abstract)

但是子類繼承了該抽象類必須重寫接口中的方法。

⑥接口只能被public修飾

接口的使用

service包下

package service;
 
public interface EatService {
    void eat();
}

service包下的impl包下

package service.impl;
 
import service.EatService;
 
public class CatImpl implements EatService {
    @Override
    public void eat() {
        System.out.println("??吃??");
    }
 
}

在controller包下

package controller;
 
import service.EatService;
import service.impl.CatImpl;
 
public class CatController {
    public static void main(String[] args) {
        EatService e=new CatImpl();
        e.eat();
    }
}

四、類與接口的關系

類和類之間是繼承關系

接口和接口之間是繼承關系

類和接口之間是實現關系(類實現接口)

類只支持單繼承(即一個子類只有一個父類),可以實現多個類

public class  A  extends  B implements C,B,D....{}

接口之間可以多重繼承。

public interface a implements b,c,d.....{}

接口多重繼承的好處

定義了許多接口,如果一個設備要同時實現那么多接口將是不小的開銷,對于同能

同類的可以把他用一個接口繼承起來,這樣這個接口就要了那些接口的全部功能,我們

使用類只要實現一個就可以了。

接口1

package service;
 
public interface EatService {
    void eat();
}

接口2

package service;
 
public interface PlayService {
    void play();
}

接口3

package service;
 
public interface SleepService {
    void sleep();
}

總接口:用來繼承上面三個接口

package service;
 
public interface SumService extends SleepService,EatService,PlayService {
}

此時原來的類實現只要實現一個總接口即可

舊:

public class CatImpl implements EatService,PlayService,SleepService {
//方法重寫
}

新:

public class CatImpl implements SumService {
//方法重寫
}

在controller中調用也是簡單不少

package controller;
import service.SumService;
import service.impl.CatImpl;
public class CatController {
    public static void main(String[] args) {
        SumService ss=new CatImpl();
        ss.eat();
        ss.play();
        ss.sleep();
 
    }
}

練習

定義一個接口用來實現兩個對象的比較。

package cn.com.Classwork190124;

public interface CompareObject<object> {
    public int compareto(object o);
    //若返回值是 0 , 代表相等; 若為正數,代表當前對象大;負數代表當前對象小
}

定義一個Circle類。

package cn.com.Classwork190124;

public class Circle {
    private double radius;
    private final double PI=3.14;

    public double findArea(){
        return PI*radius*radius;
    }

    public double getRadius() {
        return radius;
    }

    public void setRadius(double radius) {
        this.radius = radius;
    }
}

定義一個ComparableCircle類,繼承Circle類并且實現CompareObject接口。在ComparableCircle類中給出接口中方法compareTo的實現體,用來比較兩個圓的半徑大小。

package cn.com.Classwork190124;

public class ComparableCircle extends Circle implements CompareObject<Circle> {
    @Override
    public int compareto(Circle o) {
        if(this.getRadius()==o.getRadius()){
            return 0;
        }else if(this.getRadius()<=o.getRadius()){
            return -1;
        }else {
            return 1;
        }
    }
}

定義一個測試類TestInterface,創(chuàng)建兩個ComaparableCircle對象,調用compareTo方法比較兩個類的半徑大小。

package cn.com.Classwork190124;

import java.util.Scanner;

public class TestInterface {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        ComparableCircle c1 = new ComparableCircle();
        ComparableCircle c2 = new ComparableCircle();
        c1.setRadius(sc.nextDouble());
        c2.setRadius(sc.nextDouble());
        System.out.println(c1.compareto(c2));
    }
}

思考:參照上述做法定義矩形類Rectangle和ComparableRectangle類,在ComparableRectangle類中給出compareTo方法的實現,比較兩個矩形的面積大小。

總結

到此這篇關于Java中接口的文章就介紹到這了,更多相關Java接口詳解內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • springboot上傳文件并返回url過程

    springboot上傳文件并返回url過程

    這篇文章主要介紹了springboot上傳文件并返回url過程,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • java中DateUtils時間工具類詳解

    java中DateUtils時間工具類詳解

    這篇文章主要為大家詳細介紹了java中DateUtils時間工具類,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-12-12
  • 基于java實現websocket協(xié)議過程詳解

    基于java實現websocket協(xié)議過程詳解

    這篇文章主要介紹了基于java實現websocket協(xié)議過程詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-09-09
  • MyBatis深入解讀動態(tài)SQL的實現

    MyBatis深入解讀動態(tài)SQL的實現

    動態(tài) SQL 是 MyBatis 的強大特性之一。如果你使用過 JDBC 或其它類似的框架,你應該能理解根據不同條件拼接 SQL 語句有多痛苦,例如拼接時要確保不能忘記添加必要的空格,還要注意去掉列表最后一個列名的逗號。利用動態(tài) SQL,可以徹底擺脫這種痛苦
    2022-04-04
  • Java數組的初始化方法詳解

    Java數組的初始化方法詳解

    在Java程序開發(fā)中,數組是一個非常常用的數據類型,數組的初始化是使用數組來存儲和處理數據的關鍵步驟之一,但是,關于Java數組的初始化,經常會讓人感到迷惑,本文將詳細介紹Java數組的初始化方法,幫助讀者從此告別關于Java數組初始化的困惑
    2023-11-11
  • 兩種Spring服務關閉時對象銷毀的實現方法

    兩種Spring服務關閉時對象銷毀的實現方法

    spring提供了兩種方式用于實現對象銷毀時去執(zhí)行的操作,本文主要為大家詳細介紹了這兩種方式的具體實現,文中的示例代碼講解詳細,希望對大家有所幫助
    2023-04-04
  • 使用Log4j2代碼方式配置實現線程級動態(tài)控制

    使用Log4j2代碼方式配置實現線程級動態(tài)控制

    這篇文章主要介紹了使用Log4j2代碼方式配置實現線程級動態(tài)控制,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • 解析JavaSE的繼承和多態(tài)

    解析JavaSE的繼承和多態(tài)

    這篇文章主要為大家詳細介紹了JavaSE的繼承和多態(tài),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03
  • Java BigDecimal類用法詳解

    Java BigDecimal類用法詳解

    BigDecimal 由任意精度的整數非標度值 和32 位的整數標度 (scale) 組成。如果為零或正數,則標度是小數點后的位數。如果為負數,則將該數的非標度值乘以 10 的負scale 次冪。
    2016-06-06
  • MyBatis sql中test如何判斷Boolean

    MyBatis sql中test如何判斷Boolean

    這篇文章主要介紹了MyBatis sql中test如何判斷Boolean,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-01-01

最新評論

远安县| 肥城市| 武义县| 鄂托克旗| 海晏县| 德惠市| 资中县| 克什克腾旗| 简阳市| 凤冈县| 遂宁市| 黄浦区| 通化县| 尖扎县| 灌南县| 城市| 丰原市| 双桥区| 武城县| 禹城市| 当雄县| 湖州市| 永寿县| 阿图什市| 文成县| 西城区| 井冈山市| 和平区| 庄河市| 江门市| 银川市| 彩票| 汾西县| 绥化市| 阳春市| 富顺县| 清水县| 新晃| 桐乡市| 台中县| 湖南省|