欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java中抽象類和接口介紹

 更新時間:2022年01月10日 09:14:17   作者:80歲的程序猿  
大家好,本篇文章主要講的是Java中抽象類和接口介紹,感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽

1、抽象類

1.1 什么是抽象類?

1.1.1 對抽象類的理解

1.1.2 關于抽象類

類與類之間具有共同特征,將這些共同特征提取出來,形成的就是抽象類;

類本身是不存在的,屬于抽象類無法創(chuàng)建對象【無法實例化】;

抽象類是用來被子類繼承的;

finial關鍵字和abstract關鍵字不能同時出現(xiàn);

抽象類的子類可以是抽象類;

抽象類雖然無法實例化,但有構造方法,這個構造方法是供子類使用的;

接口一般描述的是行為動作信息

一個非抽象的類繼承抽象類,必須把抽象類中的抽象方法給實現(xiàn)(覆蓋、重寫)了

public class HelloWorld{
    public static void main(String[] args){
        //如何實現(xiàn)多態(tài)呢???
        Animal a = new Bird();//向上轉型(自動類型轉換)
        //面對抽象對象編程,降低程序的耦合度,提供程序的擴展力,符合OCP原則
    }
}
abstract class Animal{
    public abstract void move();
}
class Bird extends Animal{
    public void move(){
    }//Bird不是抽象類,必須實現(xiàn)父類的抽象方法
}//如果Bird是抽象類的話,那么繼承過來的抽象方法可以不去重寫、覆蓋、實現(xiàn)

1.2 抽象類屬于什么類型?

抽象類也屬于引用數據類型;

1.3 抽象類怎么定義?

[修飾符列表] abstract class 類名{

        類體;

}

1.4 抽象方法

1)抽象方法表示沒有實現(xiàn)的方法,沒有方法體以分號結尾的方法。例如:

public abstract void doSome();

2)抽象類中不一定有抽象方法,但抽象方法一定在抽象類當中;

3)沒有方法體的方法不一定都是抽象方法,Object類中就有很多方法都沒有方法體,以" ;"結尾 e.g.:public native int hashCode();這個方法底層調用了C++寫的動態(tài)鏈接庫程序;前面修飾符列表中有native,表示調用JVM本地程序

2、接口

2.1 關于接口

1)接口也是一直引用數據類型,

2)接口的完全抽象的(抽象類是半抽象類)或者也可以說接口是特殊的抽象類;

3)接口支持接口繼承也支持接口多繼承;

interface A{
}
interface B{
}
interface C extends A,B{
}

4)接口中只包含兩部分內容,一部分是常量,另一部分是抽象方法,所有內容都是public修飾的,都是公開的;

5)接口中抽象方法中的public static 可以省略,"public abstract int sun(int a,int b);" ——> "int sun(int a,int b);"

6)接口中變量中的public static final 可以省略,"public static final double PI = 3.1415926;" —> "double PI = 3.1415926;;"

7)接口中的方法都是抽象方法,所以接口中的方法都沒有方法體

2.2 接口怎么定義?

[修飾符列表] interface 接口名{

}

2.3 接口基礎語法

1)類和類之間叫做繼承,類和接口之間叫做實現(xiàn)(可看作繼承),用關鍵字"implements";

2)當一個非抽象的類實現(xiàn)接口的話,必須將接口中所有的抽象方法全部實現(xiàn)(覆蓋、重寫);

public class interface {
    public static void main(String[] args) {
        //如何實現(xiàn)多態(tài)???
        //父類型的引用指向子類型的對象
        MyMath m = new MyMathImp();
        //調用接口里面的方法(面向接口編程)
        int result = m.sum(10,2);
        System.out.println(result);
    }
}
interface MyMath{
    double PI = 3.1415926;
    int sum(int a,int b);
    int sub(int a,int b);
}
class MyMathImp implements MyMath{
    public int sum(int a,int b){//重寫接口中的抽象方法
        return a + b;
    }
    public int sub(int a,int b){//重寫接口中的抽象方法
        return a - b;
    }
}

注意:非抽象的類實現(xiàn)接口時重寫的抽象方法public不可??;

3)一個類可以實現(xiàn)多個接口,這種機制彌補了"java中類和類只支持單繼承"帶來的缺陷;

接口和接口之間在進行強制類型轉換的時候,沒有繼承關系,也可以強轉,但運行的時候可能會出現(xiàn)ClassCastException異常,需要加instanceof進行判斷;

public class HelloWorld{
    public static void main(String[] args) {
        //如何實現(xiàn)多態(tài)???
        A a = new C();
        if(a instanceof B){
            B b2 = (B)a;//此時a b的底層都是C,C實現(xiàn)了接口A和接口B,所以可以向下轉型
            b2.m2();
        }
        
        
        M m = new E();
        if(m instanceof K){
            K k = (K)m;//這里的E()和K沒有關系,E實現(xiàn)了M,但沒有實現(xiàn)接口K,所以不能向下轉型
            k.m3();
        }
    }
}
interface A{
    void m1();
}
interface B{
    void m2();
}
class C implements A,B{//C實現(xiàn)了A和B
    public void m1(){
?
    }
    public void m2(){
        System.out.println("可以向下轉型!");
    }
}
?
interface K{
    void m3();
}
interface M{
    void m4();
}
class E implements M{//E實習了M,但沒有實現(xiàn)K
    public void m3(){
    }
    public void m4(){
    }
?

4)繼承和實現(xiàn)都存在的話,代碼怎么寫?

extends關鍵字在前,implements關鍵字在后

public class interface{
    public static void main(String args[]){
        //創(chuàng)建對象
        Flyable f = new Cat();
        f.fly();
    }
}
//動物類:父類
class Animal{
}
//可飛翔的接口(是一對翅膀)
//能插拔的就是接口。
//接口提取的是行為動作
interface Flyable{
    void fly();
}
//動物類子類:貓
//Flyable是一個接口,是一個翅膀的接口,通過接口插到貓身上,讓貓可以飛翔
class Cat extends Animal implements Flyable{
    public void fly(){
        System.out.println("貓會飛");
    }
}

總結

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

相關文章

最新評論