成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

Java抽象類(lèi)與接口

wdzgege / 3299人閱讀

摘要:抽象類(lèi)和接口抽象類(lèi)抽象方法是只有方法簽名,沒(méi)有方法實(shí)現(xiàn)的方法。抽象類(lèi)不能被實(shí)例化,抽象類(lèi)可以包含方法抽象和普通成員變量構(gòu)造器初始化塊內(nèi)部類(lèi)接口枚舉種成分。抽象類(lèi)的構(gòu)造器不能用于創(chuàng)建實(shí)例,主要用于被其子類(lèi)調(diào)用。

抽象類(lèi)和接口 1.抽象類(lèi)

抽象方法是只有方法簽名,沒(méi)有方法實(shí)現(xiàn)的方法。有抽象方法的類(lèi)只能被定義成抽象類(lèi),抽象類(lèi)可以沒(méi)有抽象方法。抽象方法和抽象類(lèi)必須使用abstract修飾符來(lái)定義。

抽象類(lèi)不能被實(shí)例化,抽象類(lèi)可以包含方法(抽象和普通)、成員變量、構(gòu)造器、初始化塊、內(nèi)部類(lèi)(接口、枚舉)5種成分。抽象類(lèi)的構(gòu)造器不能用于創(chuàng)建實(shí)例,主要用于被其子類(lèi)調(diào)用。

public abstract class Shape {
    {
        System.out.println("執(zhí)行Shape的初始化塊");
    }
    private String color;

    public abstract double calPerimeter();

    public abstract String getType();

    public Shape() {
    }

    public Shape(String color) {
        System.out.println("執(zhí)行Shape的構(gòu)造器");
        this.color = color;
    }
   set,get.....
}
-----------------------------------------------------------------------------
public class Triangle extends Shape {

    public static void main(String[] args) {
        Shape triangle = new Triangle("red", 1, 2, 2);
        System.out.println(triangle.calPerimeter());
        System.out.println(triangle.getType());
    }

    private double a;
    private double b;
    private double c;
    
    public Triangle(String color, double a, double b, double c) {
        super(color);
        this.setSides(a,b,c);
    }
    public void setSides(double a,double b,double c){
        if(a+b<=c||a+c<=b||b+c<=a){
            System.out.println("三角形兩邊之和必須大于第三邊");
            return;
        }
        this.a = a;
        this.b = b;
        this.c = c;
    }

    @Override
    public double calPerimeter() {
        return a+b+c;
    }

    @Override
    public String getType() {
        return "三角形";
    }
    static abstract class test{ 
    } 
}

final和abstract不能同時(shí)使用,static和abstract不能同時(shí)使用(并不是絕對(duì)互斥,可以同時(shí)修飾內(nèi)部類(lèi))。

抽象類(lèi)避免了子類(lèi)設(shè)計(jì)的隨意性,抽象類(lèi)體現(xiàn)的就是一種模板模式的設(shè)計(jì)。

2.Java 8改進(jìn)的接口

抽象類(lèi)是從多個(gè)類(lèi)中抽象出來(lái)的模板,如果將這種抽象進(jìn)行進(jìn)行的更徹底,則可以提煉出一種更加特殊的“抽象類(lèi)”-----接口。接口里不能包含普通方法,接口里所有的方法都是抽象方法。Java 8 以后,允許在接口中定義默認(rèn)方法,默認(rèn)方法可以提供方法實(shí)現(xiàn)。

接口體現(xiàn)的是規(guī)范和實(shí)現(xiàn)分離的設(shè)計(jì)哲學(xué)。

[修飾符] interface 接口名 extends 父接口1,父接口2...
{
  零個(gè)到多個(gè)常量定義...
  零個(gè)到多個(gè)抽象方法定義...
  零個(gè)到多個(gè)內(nèi)部類(lèi)、接口、枚舉定義...
  零個(gè)到多個(gè)默認(rèn)方法或類(lèi)方法定義...
}

接口定義的是一種規(guī)范,因此接口里不能包含構(gòu)造器和初始化代碼塊定義。接口里可以包含成員變量(只能是靜態(tài)常量),方法(抽象、默認(rèn)、類(lèi)),內(nèi)部類(lèi)(包括內(nèi)部接口、枚舉)定義。

//系統(tǒng)自動(dòng)為接口里定義的成員變量增加public static final修飾符
int MAX_SIZE=50;
public static final MAX_SIZE=50;
接口里的普通方法不管是否使用public abstract修飾符,系統(tǒng)自動(dòng)為接口里定義的普通方法增加public abstract修飾符。
接口里定義的內(nèi)部類(lèi)、內(nèi)部接口、內(nèi)部枚舉默認(rèn)都采用public static修飾符。
public interface Output {
    int MAX_CACHE_INT=50;
    void out();
    void getData(String msg);
    default void print(String... msgs){
        for(String msg:msgs){
            System.out.println(msg);
        }
    }
    default void test(){
        System.out.println("默認(rèn)的test()方法");
    }
    static String staticTest(){
        return "接口里的類(lèi)方法";
    }
}
3.接口和抽象類(lèi)

相同點(diǎn):

接口和抽象類(lèi)都不能被實(shí)例化,它們都位于繼承樹(shù)的頂端,用于被其他類(lèi)實(shí)現(xiàn)和繼承。

接口和抽象類(lèi)都可以包含抽象方法,實(shí)現(xiàn)接口或繼承抽像類(lèi)的普通子類(lèi)必須實(shí)現(xiàn)這些抽象方法。

不同點(diǎn):

接口里只能包含抽象方法和默認(rèn)方法,不能為普通方法提供方法實(shí)現(xiàn);抽象類(lèi)則可以包含普通方法。

接口里只能定義靜態(tài)常量;抽象類(lèi)可以定義普通成員變量。

接口里不包含構(gòu)造器,初始化塊;抽象類(lèi)包含。

4.內(nèi)部類(lèi)

內(nèi)部類(lèi)的作用:

提供更好的封裝,可以把內(nèi)部類(lèi)隱藏在外部類(lèi)之內(nèi),不允許同一個(gè)包中的其他類(lèi)訪問(wèn)該類(lèi)。

內(nèi)部類(lèi)成員可以直接訪問(wèn)外部類(lèi)的私有數(shù)據(jù)。

匿名內(nèi)部類(lèi)適合用于創(chuàng)建那些僅需要一次使用的類(lèi)。

內(nèi)部類(lèi)比外部類(lèi)多使用三個(gè)修飾符:private、protected、static,非靜態(tài)內(nèi)部類(lèi)不能擁有靜態(tài)成員。

在Java 8之前,被局部?jī)?nèi)部類(lèi)、匿名內(nèi)部類(lèi)訪問(wèn)的局部變量必須使用final修飾,Java 8以后不必,系統(tǒng)默認(rèn)。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/68978.html

相關(guān)文章

  • Java抽象類(lèi)與接口

    摘要:在抽象類(lèi)中,聲明的是,可是。抽象類(lèi)只能作為子類(lèi)的超類(lèi),子類(lèi)繼承抽象類(lèi)時(shí)必須被實(shí)現(xiàn)。它根本不存在方法的實(shí)現(xiàn)實(shí)現(xiàn)子類(lèi)使用關(guān)鍵字來(lái)繼承抽象類(lèi)。添加新方法如果你往抽象類(lèi)中添加新的方法,你可以給它提供默認(rèn)的實(shí)現(xiàn)。轉(zhuǎn)自,抽象類(lèi)與接口的區(qū)別 抽象類(lèi)與接口 抽象類(lèi)與接口一樣,都不能被實(shí)例化,可以有具體實(shí)現(xiàn)的方法,也可以有抽象的方法。在抽象類(lèi)中,聲明的field是static、final,method可...

    mengbo 評(píng)論0 收藏0
  • java學(xué)習(xí)(三) —— 面對(duì)對(duì)象

    摘要:前言是面對(duì)對(duì)象的語(yǔ)言,因此有必要單獨(dú)紀(jì)錄下對(duì)象的各種定義和理解。面對(duì)對(duì)象基本概述概述是基于面向過(guò)程的變成思想,是對(duì)面向過(guò)程的一種封裝。面對(duì)對(duì)象開(kāi)發(fā)就是不斷的創(chuàng)建對(duì)象,使用對(duì)象,指揮對(duì)象做事情。面對(duì)對(duì)象設(shè)計(jì)其實(shí)就是在管理和維護(hù)對(duì)象之間的關(guān)系。 前言 java是面對(duì)對(duì)象的語(yǔ)言,因此有必要單獨(dú)紀(jì)錄下對(duì)象的各種定義和理解。 面對(duì)對(duì)象,主要包括:面向?qū)ο笏枷?,?lèi)與對(duì)象及其使用,對(duì)象的內(nèi)存圖,成...

    褰辯話(huà) 評(píng)論0 收藏0
  • Java抽象類(lèi)與接口的區(qū)別

    摘要:很多常見(jiàn)的面試題都會(huì)出諸如抽象類(lèi)和接口有什么區(qū)別,什么情況下會(huì)使用抽象類(lèi)和什么情況你會(huì)使用接口這樣的問(wèn)題。在討論它們之間的不同點(diǎn)之前,我們先看看抽象類(lèi)接口各自的特性。抽象類(lèi)抽象類(lèi)是用來(lái)捕捉子類(lèi)的通用特性的。 很多常見(jiàn)的面試題都會(huì)出諸如抽象類(lèi)和接口有什么區(qū)別,什么情況下會(huì)使用抽象類(lèi)和什么情況你會(huì)使用接口這樣的問(wèn)題。本文我們將仔細(xì)討論這些話(huà)題。 在討論它們之間的不同點(diǎn)之前,我們先看看抽象類(lèi)...

    Ethan815 評(píng)論0 收藏0
  • Java 面向?qū)ο?/b>

    摘要:自從轉(zhuǎn)到前段,差不多有一年時(shí)間沒(méi)有動(dòng)了,今天老弟問(wèn)我關(guān)于的面向?qū)ο螅约翰桓抑苯踊卮鹆?,也許自己真的應(yīng)該去做相關(guān)的考究了。要有父類(lèi)引用指向子類(lèi)對(duì)象。外部類(lèi)要訪問(wèn)內(nèi)部類(lèi)的成員,必須要建立內(nèi)部類(lèi)的對(duì)象。 自從轉(zhuǎn)到前段,差不多有一年時(shí)間沒(méi)有動(dòng)Java了,今天老弟問(wèn)我關(guān)于Java的面向?qū)ο螅约翰桓抑苯踊卮鹆?,也許自己真的應(yīng)該去做相關(guān)的考究了。然后在告訴他吧,記在這里當(dāng)做一個(gè)筆記吧。  什么...

    cncoder 評(píng)論0 收藏0
  • Java編程基礎(chǔ)10——面向?qū)ο骭多態(tài)&抽象類(lèi)&接口

    摘要:案例演示抽象類(lèi)的成員特點(diǎn)抽象類(lèi)的成員方法特性抽象方法強(qiáng)制要求子類(lèi)做的事情。抽象類(lèi)中定義的是該繼承體系的共性功能。 1.多態(tài)的概述及其成員訪問(wèn)特點(diǎn)代碼體現(xiàn) A:多態(tài)(polymorphic)概述 事物存在的多種形態(tài) B:多態(tài)前提- 1.要有繼承關(guān)系 2.要有方法重寫(xiě) 3.要有父類(lèi)引用指向子類(lèi)對(duì)象。 C:多態(tài)中的成員訪問(wèn)特點(diǎn)之 成員變量:編譯和運(yùn)行都看父類(lèi)。 成員方法:編...

    dunizb 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<