接口,抽象類,繼承和實(shí)現(xiàn)

目標(biāo)

今天我們學(xué)習(xí)了接口和抽象類,這兩個(gè)東西在Java這個(gè)面向?qū)ο蟮木幊陶Z言中用處很多,抽象類相比于普通類的抽象程度更高,而接口相比于抽象類更加抽象。

技術(shù)

抽象類的特點(diǎn)

抽象類和普通類一樣,可以有成員變量(屬性),可以有成員方法,可以有構(gòu)造方法,與普通類唯一區(qū)別就是可能存在抽象的成員方法。抽象類的初衷是“抽象”,即規(guī)定這個(gè)類“是什么”,具體的實(shí)現(xiàn)暫不確定,是不完整的,因此不允許直接創(chuàng)建實(shí)例。
1.抽象類是由子類具有相同的一類特征抽象而來,也可以說是其基類或者父類
2.抽象類和抽象方法由abstract修飾符修飾,抽象方法必須為 public 或者 protected(因?yàn)槿绻麨?private,則不能被子類繼承,子類便無法實(shí)現(xiàn)該方法),缺省情況下默認(rèn)為 public
3.抽象類不能用來創(chuàng)建對(duì)象
4.抽象方法必須由子類來實(shí)現(xiàn)
5.如果一個(gè)類繼承于一個(gè)抽象類,則子類必須實(shí)現(xiàn)父類的抽象方法,如果子類沒有實(shí)現(xiàn)父類的抽象方法,則必須將子類也定義為抽象類

abstract class text{
    String name="你的名字";//可以定義常量和變量
    String yourName;
    public abstract void show();//抽象方法

    //普通方法
    public void shows(){
        System.out.println("你好");
    }
    class text2{
        public void showing(){
            System.out.print("內(nèi)部類");
        }
    }
}

接口的特點(diǎn)
我們可以將接口當(dāng)成一個(gè)類來看待,相比于抽象類中還可以寫普通的方法,接口則是完完全全的由抽象方法和常量組成。接口由interface修飾符修飾。

1.我們知道在Java里面是不能實(shí)現(xiàn)多繼承的但是接口不同,一個(gè)類可以同時(shí)實(shí)現(xiàn)多個(gè)接口,不管這些接口之間有沒有關(guān)系,所以接口彌補(bǔ)了抽象類不能多繼承的缺陷。
2.接口是抽象類的延伸,它可以定義沒有方法體的方法,要求實(shí)現(xiàn)者去實(shí)現(xiàn)。
3.接口的所有方法訪問權(quán)限自動(dòng)被聲明為 public
4.接口中可以定義“成員變量”,會(huì)自動(dòng)變?yōu)?public static final 修飾的靜態(tài)常量
5.可以通過類命名直接訪問:ImplementClass.name
實(shí)現(xiàn)接口的非抽象類必須實(shí)現(xiàn)接口中所有方法,抽象類可以不用全部實(shí)現(xiàn)
6.接口不能創(chuàng)建對(duì)象,但可以申明一個(gè)接口變量,方便調(diào)用
例子

interface testInterface{
    int I=100;//自動(dòng)變?yōu)?public static final 修飾的靜態(tài)常量
    int Count=20;
    void text();//接口里面的方法只能為抽象方法

    //接口里面可以定義內(nèi)部類
    public static class inner{
        int name;
        public void show(){
            System.out.print("內(nèi)部類");
        }
    }
}

接口和抽象類的區(qū)別
接口和抽象類之間盡管有很多相似之處但是它們之間還是有所區(qū)別
1.抽象類和抽象類、類之間由于java出于數(shù)據(jù)安全性 的考慮只能采用單繼承
2.類和接口之間可以多實(shí)現(xiàn),這也為java不能實(shí)現(xiàn)多繼承開辟了另外的道路
3.接口與接口之間可以實(shí)現(xiàn)多繼承
4.抽象類與接口的成員組成:接口與抽象類相比只能存在抽象成員方法,且只能存在成員常量
接口的多繼承和多實(shí)現(xiàn)

interface interfaceA{

    void showA();
}
interface interfactB{

    void showB();
}
//接口的多繼承 被繼承的接口和接口之間用','隔開
interface interfaceC extends interfaceA,interfactB{

    void showC();
}
//接口的實(shí)現(xiàn)用implements
//實(shí)現(xiàn)接口的類必須實(shí)現(xiàn)接口里面的全部抽象類
class textInterface implements interfaceA,interfactB {
    @Override
    public void showA() {
        System.out.println("實(shí)現(xiàn)抽象方法A");
    }
    @Override
    public void showB(){
        System.out.println("實(shí)現(xiàn)抽象方法B");
    }
}

寫代碼

今天寫的代碼算是自打那個(gè)撲克牌“賭博”游戲以來我能聽懂的一個(gè)了,也算是這個(gè)代碼比較簡(jiǎn)單的緣故。不過po代碼就算了
另外還有一個(gè)小程序

package day_7;

public class Lishubo {
    public static void main(String[] args){
        MyCode text=new MyCode();
        text.calculate();
    }
}
abstract class TimeTemplate{
    //通過實(shí)現(xiàn)這個(gè)方法 獲得具體測(cè)量的代碼
    public abstract void code();

    //實(shí)現(xiàn)測(cè)量
    public void calculate(){

        long start = System.currentTimeMillis();

        //測(cè)量的代碼
        code();

        long end = System.currentTimeMillis();

        System.out.print(end-start);

    }
}

class MyCode extends TimeTemplate{

    @Override
    public void code() {
        int total = 0;
        for (int i = 0; i < 100000; i++){
            total += i;
        }
    }
}

這里面運(yùn)用到了我們今天學(xué)習(xí)的知識(shí),很容易懂。

寫在后面

說實(shí)話在進(jìn)入了java學(xué)習(xí)階段之后我感覺寫的demo難了一大截。但是俺覺得這都是為了我們學(xué)習(xí)Android開發(fā)做鋪墊,人不能總是走在平地,也會(huì)經(jīng)歷腳下有石子,前方有山包,你要越過小溪,也要走過一片雜草叢生的草地。加油

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 整理來自互聯(lián)網(wǎng) 1,JDK:Java Development Kit,java的開發(fā)和運(yùn)行環(huán)境,java的開發(fā)工具...
    Ncompass閱讀 1,615評(píng)論 0 6
  • 一、抽象類 1、抽象類含義的概括: 當(dāng)多個(gè)類出現(xiàn)相同功能時(shí),但功能主體不同,這樣可以向上抽取,抽取時(shí)只抽取功能定義...
    玉圣閱讀 927評(píng)論 0 6
  • 一:java概述: 1,JDK:Java Development Kit,java的開發(fā)和運(yùn)行環(huán)境,java的開發(fā)...
    慕容小偉閱讀 1,936評(píng)論 0 10
  • 魯迅有一句話,“樓下一個(gè)男人病得要死,那間壁的一家唱著留聲機(jī);對(duì)面是弄孩子。樓上有兩人狂笑;還有打牌聲。河中的船上...
    lvmm閱讀 81評(píng)論 0 1
  • 巴拿馬的老城區(qū)由于年久失修,許多昔日的老建筑現(xiàn)今都搖搖欲墜?;謴?fù)老建筑正在慢慢進(jìn)行。重整后的老建筑成為典雅的賓館,...
    騎著船兒去旅行閱讀 213評(píng)論 0 0

友情鏈接更多精彩內(nèi)容