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

抽象類與接口(Java系列6)-創(chuàng)新互聯(lián)

目錄

創(chuàng)新互聯(lián)是專業(yè)的零陵網(wǎng)站建設(shè)公司,零陵接單;提供成都網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì),網(wǎng)頁(yè)設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行零陵網(wǎng)站開(kāi)發(fā)網(wǎng)頁(yè)制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛(ài)的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來(lái)合作!

前言:

1.抽象類

1.1抽象類的概念及語(yǔ)法

1.2?抽象類的特征

1.3抽象類的特性

2.接口

2.1接口的概念及語(yǔ)法

2.2接口的使用及特性

2.2.1接口的使用

2.2.2接口的特性

2.3實(shí)現(xiàn)多個(gè)接口

2.4接口的繼承

3.抽象類與接口的區(qū)別

結(jié)束語(yǔ):


前言:

上一次小編講解了繼承、組合和多態(tài),這次小編和大家分享一下抽象類與接口的知識(shí)點(diǎn)。

1.抽象類 1.1抽象類的概念及語(yǔ)法

在面向?qū)ο蟮母拍钪校械膶?duì)象都是通過(guò)類來(lái)描述的,但是反過(guò)來(lái),并不是所有的類都是用來(lái)描述對(duì)象的,如果這個(gè)類中沒(méi)有包含足夠的信息來(lái)描述一個(gè)具體的對(duì)象,這樣的類就是抽象類。

1.2?抽象類的特征

關(guān)鍵字:abstract

通過(guò)abstract修飾的類就叫抽象類,通過(guò)abstract修飾的方法叫抽象方法。

代碼如下所示:

package demo1;
//抽象類Test
public abstract class Test {
    public int a;//成員變量
    public void func1(){
        //普通方法
    }
    abstract public void func2();//抽象方法
}

注意:

  • 被abstract修飾的方法不能有方法體。?
  • 抽象方法也是類,也可以有類的一般屬性,可以有普通方法和屬性,甚至構(gòu)造方法。
1.3抽象類的特性

①抽象類不能直接實(shí)例化對(duì)象。

②抽象方法不被private、final和static修飾,因?yàn)楸籥bstract修飾的方法需要在子類中重寫(xiě),被修飾之后就不能重寫(xiě)了。

③抽象類必須要被繼承,并且繼承后子類要重寫(xiě)父類中的抽象方法,否則子類也是抽象類,必須要使用abstract修飾。

代碼如下所示:

package demo1;
abstract class Shape{
   abstract public void draw();
   abstract void calcArea();
}
class Rect extends Shape{
    private double length;
    private double width;

    public Rect(double length, double width) {
        this.length = length;
        this.width = width;
    }

    @Override
    //該注釋可以幫助我們檢查重寫(xiě)代碼的格式是否正確
    public void draw() {
        //子類必須重寫(xiě)父類的abstract修飾的方法
        System.out.println("矩形為:length=" + length + " width=" + width);
    }

    @Override
    void calcArea() {
        //子類必須重寫(xiě)父類的abstract修飾的方法
        System.out.println("矩形的面積為:" + length * width);
    }
}
public class Test2 {
    public static void main(String[] args) {
        Rect rect = new Rect(12,23);
        rect.draw();
        rect.calcArea();
    }
}

結(jié)果如下所示:

④抽象類中不一定包含抽象方法,但包含抽象的方法的類必須是抽象類。

⑥抽象類中可以有構(gòu)造方法,供子類創(chuàng)建對(duì)象時(shí),初始化父類的成員變量。

代碼如下所示:

package demo1;
abstract class A{
    public int a;
    public int b;
    abstract public void func();

    public A(int a, int b) {
        this.a = a;
        this.b = b;
    }
}
class B extends A{

    public B(int a, int b) {
        super(a, b);
        //先幫助父類構(gòu)造
    }

    @Override
    public void func() {
        System.out.println("對(duì)父類被abstract修飾的方法進(jìn)行重寫(xiě)!");
    }
}
public class Test3 {
    public static void main(String[] args) {
        B b = new B(1,2);
        b.func();
    }
}

結(jié)果如下所示:

2.接口 2.1接口的概念及語(yǔ)法

接口就是公共的行為規(guī)范標(biāo)準(zhǔn),大家在實(shí)現(xiàn)時(shí),只要符合規(guī)范標(biāo)準(zhǔn),就可以通用。在java中,接口也可以看做是:多個(gè)類的公共規(guī)范,是一種引用數(shù)據(jù)類型。

關(guān)鍵字:interface。

代碼如下所示:

interface IUsb{
    //一個(gè)接口的定義
    void func();
}

注意:

  • 創(chuàng)建接口時(shí),接口的命名一般以大寫(xiě)字母I開(kāi)頭。?
  • 接口命名時(shí)一般使用“形容詞”詞性的單詞。
  • 阿里編碼規(guī)范中約定,接口中的方法和屬性不要加任何修飾符號(hào),保持代碼的簡(jiǎn)潔性。
2.2接口的使用及特性 2.2.1接口的使用

接口不可以直接使用,必須要有一個(gè)“實(shí)現(xiàn)類”來(lái)“實(shí)現(xiàn)”該接口,實(shí)現(xiàn)接口中的所有抽象方法。

關(guān)鍵字:implements

代碼如下所示:

package demo2;

public class Test2 implements IUsb{
    @Override
    public void func() {
        //實(shí)現(xiàn)接口中的所有抽象方法
    }
}

注意:子類和父類直接是extends繼承關(guān)系,類與接口之間是implements實(shí)現(xiàn)關(guān)系。

2.2.2接口的特性

①接口類型是一種引用類型,但是不能直接new接口的對(duì)象。

②接口中的每一個(gè)方法都是public的抽象方法,即接口中的方法會(huì)被隱式指定為public?abstract(只能是public?abstract,其他修飾符都會(huì)報(bào)錯(cuò))。

interface B{
    void func1();
    public abstract void func2();
    //其中func1和func2之前的修飾符都是一樣的。
}

③接口中的方法是不能在接口中實(shí)現(xiàn)的,只能由實(shí)現(xiàn)接口的類來(lái)實(shí)現(xiàn)。

package demo2;
interface C{
    public abstract void func();
    //不可以在接口中實(shí)現(xiàn)該方法,而是應(yīng)該在實(shí)現(xiàn)類中實(shí)現(xiàn)該方法!?。?//    public abstract void func2(){
//        System.out.println("接口中實(shí)現(xiàn)方法體!");
//    }
}
public class Test5 implements C{

    @Override
    public void func() {
        System.out.println("在實(shí)現(xiàn)類中實(shí)現(xiàn)!");
    }
}

④重寫(xiě)接口中方法時(shí),不能使用默認(rèn)的訪問(wèn)權(quán)限。

package demo2;
interface D{
    void func();
}
public class Test6 implements D {
    @Override
    void func() {
        System.out.println("不可以使用默認(rèn)的訪問(wèn)權(quán)限?。。?);
    }
//    @Override
//    public void func() {
//        System.out.println("使用public修飾的?。?!");
//    }

}

⑤接口中可以含有變量,但是接口中的變量會(huì)被隱式的指定為public?static?final變量。

interface E{
    public static final int a = 10;//必須要給定默認(rèn)值
    double b = 1.2;//默認(rèn)是被public static final修飾的。
}

⑥接口中不能有靜態(tài)代碼塊和構(gòu)造方法。

interface F{
//    static {
//        //不能有靜態(tài)代碼塊
//    }
    int a = 10;
    int b = 20;
    //不可以有構(gòu)造代碼塊
//    public F(int a, int b) {
//        this.a = a;
//        this.b = b;
//    }
}

⑦接口雖然不是類,但是接口編譯完成后字節(jié)碼文件后綴格式也是.class。

⑧如果類沒(méi)有實(shí)現(xiàn)接口中的所有的抽象方法,則該類必須設(shè)置為抽象類。

package demo2;
interface G{
    void func1();
    void func2();
    //如果類沒(méi)有實(shí)現(xiàn)接口中的所有的抽象方法,則該類必須設(shè)置為抽象類。
}
public abstract class Test9 implements G{
    @Override
    public void func1() {
        //只實(shí)現(xiàn)一個(gè)抽象方法,則該類必須置為abstract
    }
}

⑨JDK8中:接口中還可以包含default方法。

interface H{
    //default void func3();在JDK8中可以。
}
2.3實(shí)現(xiàn)多個(gè)接口

在Java中,類和類之間是單繼承的,一個(gè)類只能有一個(gè)父類,即Java中不支持多繼承,但是一個(gè)類可以實(shí)現(xiàn)多個(gè)接口。

代碼如下所示:

package demo3;
interface IEat{
    void eat();
}
interface IRunning{
    void run();
}
public class Animal {
    public String name;
    public int age;
    public Animal(String name, int age) {
        this.name = name;
        this.age = age;
    }
}
class Cat extends Animal implements IEat,IRunning{
    //先繼承,再實(shí)現(xiàn)。繼承只能繼承一個(gè),實(shí)現(xiàn)可以實(shí)現(xiàn)多個(gè)接口
    public Cat(String name, int age) {
        super(name, age);
    }
    @Override
    public void eat() {
        System.out.println(name + "正在吃飯!");
    }

    @Override
    public void run() {
        System.out.println(name + "正在跑!");
    }

    public static void main(String[] args) {
        Cat cat = new Cat("咪咪",12);
        cat.eat();
        cat.run();
    }


}

結(jié)果如下所示:

注意:一個(gè)實(shí)現(xiàn)類實(shí)現(xiàn)多個(gè)接口的時(shí)候,每一個(gè)接口中的抽象方法都要實(shí)現(xiàn),否則該類必須設(shè)置為抽象類。

2.4接口的繼承

在java中,類和類之間是單繼承,一個(gè)類可以實(shí)現(xiàn)多個(gè)接口,接口與接口之間可以多繼承,即用接口可以達(dá)到多繼承的目的。

關(guān)鍵字;extends。

代碼如下所示:

package demo4;
interface IRunning{
    void run();
}
interface ISwimming{
    void swimming();
}
interface IFly extends IRunning,ISwimming{
    //實(shí)現(xiàn)了接口間的多繼承
    void fly();
}
public class Animal {
    public String name;
    public int age;

    public Animal(String name, int age) {
        this.name = name;
        this.age = age;
    }
}
class Duck extends Animal implements IFly{

    public Duck(String name, int age) {
        super(name, age);
    }

    @Override
    public void run() {
        System.out.println(name + "正在跑!");
    }

    @Override
    public void swimming() {
        System.out.println(name + "正在游泳!");
    }

    @Override
    public void fly() {
        System.out.println(name + "正在飛");
    }

    public static void main(String[] args) {
        Duck duck = new Duck("阿飛",13);
        duck.fly();
        duck.run();
        duck.swimming();
    }
}

結(jié)果如下所示:

3.抽象類與接口的區(qū)別

抽象類:

  • 是對(duì)一個(gè)事物在抽象。
  • 可以繼承一個(gè)普通類。
  • 可以繼承一個(gè)抽象類。
  • 可以繼承一個(gè)普通類/抽象類同時(shí)實(shí)現(xiàn)多個(gè)接口。

接口:

  • 是對(duì)一個(gè)行為或者規(guī)范在設(shè)定標(biāo)準(zhǔn)。
  • 可以通過(guò)extends拓展多個(gè)接口的功能。
結(jié)束語(yǔ):

這次小編主要和大家分享了抽象類和接口的一些簡(jiǎn)單知識(shí)點(diǎn),至于具體的應(yīng)用后期小編還會(huì)繼續(xù)出的,敬請(qǐng)期待,希望對(duì)大家有所幫助,想要學(xué)習(xí)的同學(xué)記得關(guān)注小編和小編一起學(xué)習(xí)吧!如果文章中有任何錯(cuò)誤也歡迎各位大佬及時(shí)為小編指點(diǎn)迷津(在此小編先謝過(guò)各位大佬啦?。?

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購(gòu),新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧

分享文章:抽象類與接口(Java系列6)-創(chuàng)新互聯(lián)
網(wǎng)頁(yè)網(wǎng)址:http://chinadenli.net/article20/cdphjo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)建站、域名注冊(cè)App開(kāi)發(fā)、網(wǎng)頁(yè)設(shè)計(jì)公司軟件開(kāi)發(fā)、網(wǎng)站維護(hù)

廣告

聲明:本網(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)

h5響應(yīng)式網(wǎng)站建設(shè)