抽象類 和 接口

抽象類

抽象類 abstract 模板
模板的作用 模具-玩具(顏色不一樣 材質(zhì)不一樣)

1.主函數(shù)

BaseAndroidStudy 是Student的父類奸忽,可以用BaseAndroidStudy代替 Student xw=new Student中的Student


public class MyClass {
    public static void main(String[]args)
    {
        //顯示創(chuàng)建一個子類 繼承抽象類   創(chuàng)建這個類的對象
       BaseAndroidStudy xw=new Student("xiaow","book","xuexi");
       xw.studyc();
       //2.創(chuàng)建使用匿名類  只使用一次
        BaseAndroidStudy zx=new BaseAndroidStudy("book","xuexi") {
            @Override
            public void studyc() {

            }
        };

    }
}
2.抽象類
  • 抽象方法不需要實現(xiàn)
  • 定義一個抽象類 管理學(xué)習(xí)Android開發(fā)的路線
  • 抽象類里面定義使用這個功能就必須實現(xiàn)的方法和屬性
abstract class  BaseAndroidStudy{
    //定義一個代碼塊
    {
        System.out.println("鍛煉身體");
    }
    //定義一個屬性用于保存數(shù)據(jù)
    public String  javaBook;
    //定義一個靜態(tài)的常量
    public static final String  cBook="c 語言 基礎(chǔ) ";
    //定義一個抽象方法 不需要實現(xiàn) 子類實現(xiàn)
    public abstract void studyc();
    //定義一個普通方法  已經(jīng)確定方法的具體實現(xiàn)
    public void studyjava()
    {
        System.out.println("參見Java被訓(xùn)班");
    }
    public  Dream dream;
    public BaseAndroidStudy(String javaBook,String dream)
    {
        this.javaBook=javaBook;
        this.dream=new Dream();
        this.dream.name=dream;
    }

    //定義一個內(nèi)部類用于管理目標(biāo)夢想
    private class Dream
    {
        public String name;
        public void show()
        {
            System.out.println("我的夢想是"+name);
        }
    }

}
3.普通類
  • 使用extents 繼承 BaseAndroidStudy
  • 如果繼承一個抽象類 就必須在普通類里面實現(xiàn)抽象類的抽象方法
  • 如果不實現(xiàn)抽象類 也可以把這個類定義為抽象類
class Student extends BaseAndroidStudy
{
    String name;
    @Override
    public void studyc() {
        System.out.println("看書");

    }
    public Student(String name,String bookname,String dream)
    {
        super(bookname,dream);
        this.name=name;
    }
}

接口

  • 接口 interface 定義一套(兩者之間相互轉(zhuǎn)換)方法 用于對象之間的通信
  • 不要把接口理解為某個物理存在的東西
  • 接口就是定義一套規(guī)則/規(guī)范
    *接口里面默認(rèn)變量都是static final 常量
    *默認(rèn)情況下不需要自己寫 public static final
  • 不能定義變量
  • 接口里面不能定義代碼塊
  • 接口里面不能定義構(gòu)造方法
  • 接口里面不能添加普通/對象/實例方法
  • 只有抽象方法
  • 泣港,默認(rèn)就是public abstract
  • 如果需要定義已經(jīng)有實現(xiàn)的方法
  • 使用default
  • 接口里面可以使用內(nèi)部類
  • 使用implements 實現(xiàn)一個接口
  • 一個類可以實現(xiàn)多個接口
  • class Test implements Test2,Test1
  • 一個接口可以繼承多個接口
  • interface Test1 extends Test2
1.主函數(shù)
public class MyClass {
    public static void main (String [] args)
    {
        Test a=new Test();
        a.test();
    }
}

2.接口Test1
interface  Test1
{
    int i=100;
    int count =20;
    void test();
    class inner
    {
        int name;
        public void show()
        {
            System.out.println("suydafyfweuydf");
        }
    }
}

3.接口Test2 ,并使用extents繼承接口Test1
interface  Test2 extends Test1
{
    int i=100;
    int count =20;
    void test();
    void test1();
    class inner
    {
        int name;
        public void show()
        {
            System.out.println("suydafyfweuydf");
        }
    }
}
4.創(chuàng)建普通類
  • 創(chuàng)建類用implements繼承接口Test1,Test2
  • 實現(xiàn)接口中的抽象方法棉磨,注意同名方法是屬于Test1還是Test2
class Test implements Test2 ,Test1
{

    @Override
    public void test() {

        Test1.inner  in=new Test1.inner();
        in.show();
    }

    @Override
    public void test1() {

    }
}
結(jié)果.png

抽象類和接口的混合使用

按鈕的實驗

1.主函數(shù)
  • 創(chuàng)建MainActivity類的變量main
  • 用變量main 使用MainActivity類中的方法teach
public class MyClass {
    public static void main( String[]args)
    {
        long start=System.currentTimeMillis();
      MainActivity main=new MainActivity();
      main.touch();
      long end=System.currentTimeMillis();
      System.out.println(end-start);
    }

}

2.創(chuàng)建抽象類Activity
  • 用ArrayList 定義數(shù)組(不明確內(nèi)容數(shù)量)
  • 定義 界面的創(chuàng)建和銷毀
  • 定義addChild(View v)继蜡,將在界面上顯示內(nèi)容
public  abstract class Activity {
    //保存這個界面的所有子視圖
    public ArrayList<View> childs=new ArrayList<>();
    //界面的創(chuàng)建
    public  abstract void Oncreat();
    //界面的銷毀
    public abstract void Destory();
    //將子控件添加到當(dāng)前界面上
    //接受時 用父類去接收子類  當(dāng)需要訪問子類時  就要強制轉(zhuǎn)化為對應(yīng)得到類型
    public  void addChild(View v) {
        if (v instanceof Botton) {
            Botton btn = (Botton) v;
            System.out.println(btn.titie + "按鈕顯示在界面上了");
            System.out.println(btn.titieColour + "按鈕顯示在界面上了");
        }
        //保存子控件
        childs.add(v);
    }
}

3.定義一個普通類MainActivity
  • 繼承抽象類Activity 究驴,繼承接口View.OnClickListener
  • 定義構(gòu)造方法 弦疮,執(zhí)行操作Oncreak()
  • 定義操作觸摸 teach
  • 執(zhí)行抽象方法Oncreak剧辐,和Destory
public class MainActivity extends Activity  implements  View.OnClickListener{
    Botton bin;

   public  MainActivity()
    {
        Oncreat();
    }
    @Override
    public void Oncreat() {
        //主界面如何布局
        //添加一個按鈕
        bin=new Botton("分享","紅色");
        //添加一個圖片
        //將創(chuàng)建的控件添加的當(dāng)前界面
         addChild(bin);

        //告訴按鈕是誰監(jiān)聽這個事件
        bin.listener=this;

    }
    //模擬觸摸
    public void touch()
    {
        //將屏幕觸摸的事件傳遞給按鈕
       bin.gettouch();
    }
    @Override
   //銷毀之前需要做什么事情
        public void Destory() {

    }
   //當(dāng)事件觸發(fā)了  就會來調(diào)用 onClick方法
    @Override
    public void onClick(View v) {
        System.out.println("按鈕被點擊了");
    }
}

4.定義一個類View
  • 管理一個視圖顯示和事件監(jiān)聽
  • 什么情況下需要將一個父類做成抽象類(模板)
  • 1.不要直接創(chuàng)建這個類的對象
  • 2.這個類里面的某些方法 還不確定如何實現(xiàn)
  • 定義方法gettouch解恰,表示接觸事件
public class View {
    //所有的視圖共有的屬性
    String  backgrountcolour;
    String   bordercolour;
    //記錄誰想監(jiān)聽這個事件
    //暫時不確定誰監(jiān)聽這個事件
    //但是監(jiān)聽事件的人一定實現(xiàn)了這個接口
    OnClickListener  listener;
    //所有的視圖都要監(jiān)聽事件
    //如果一個事件需要監(jiān)聽事件  那么就必須實現(xiàn)監(jiān)聽事件的接口
    //定義內(nèi)部接口  封裝
    public  interface OnClickListener
    {
       //
        void   onClick(View v);
    }
    //用于控件接受觸摸事件
    public  void gettouch()
    {
        listener.onClick(this);
    }
}
5.定義類Botten
public class Botton  extends View{
    String titie;
    String titieColour;

    public Botton(String titie,String titieColour)
    {
        this.titie=titie;
        this.titieColour=titieColour;
    }


}
6.顯示結(jié)果
QQ截圖20190812192620.png

記錄代碼的測試時間


public class Test {
    public static  void main (String[] args)
    {
         mycode test=new mycode();
         test.calculate();
    }
}
abstract class TimeTemplate
{
    //通過實現(xiàn)這個方法  獲得具體測量的代碼
    public  abstract void code();
    //實現(xiàn)測量
    public void calculate()
    {
        long state= System.currentTimeMillis();
        code();
        long end=System.currentTimeMillis();
        System.out.println(end-state);
    }
}
class mycode extends TimeTemplate {

    @Override
    public void code() {
        //寫自己的代碼
        int total =0;
        for(int i=0;i<10000;i++)
        {
            total=total+i;
        }
    }
}
QQ截圖20190812194550.png

感悟:對于新知識來講锋八,我始終認(rèn)為循環(huán)漸進(jìn)式的學(xué)習(xí)方式最好,學(xué)完之后先寫小程序熟悉如何使用护盈,從中找出沒有注意到的小細(xì)節(jié)挟纱,然后感覺差不多后在進(jìn)行大程序。今天我們寫了三四個小程序腐宋,但是大程序還是邏輯理不清紊服,一個個類分開可以知道是什么作用,但是合在一起就有點搞不清了胸竞。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末欺嗤,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子卫枝,更是在濱河造成了極大的恐慌煎饼,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,376評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件校赤,死亡現(xiàn)場離奇詭異吆玖,居然都是意外死亡,警方通過查閱死者的電腦和手機马篮,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,126評論 2 385
  • 文/潘曉璐 我一進(jìn)店門沾乘,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人浑测,你說我怎么就攤上這事翅阵。” “怎么了迁央?”我有些...
    開封第一講書人閱讀 156,966評論 0 347
  • 文/不壞的土叔 我叫張陵掷匠,是天一觀的道長。 經(jīng)常有香客問我岖圈,道長槐雾,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,432評論 1 283
  • 正文 為了忘掉前任幅狮,我火速辦了婚禮,結(jié)果婚禮上株灸,老公的妹妹穿的比我還像新娘崇摄。我一直安慰自己,他們只是感情好慌烧,可當(dāng)我...
    茶點故事閱讀 65,519評論 6 385
  • 文/花漫 我一把揭開白布逐抑。 她就那樣靜靜地躺著,像睡著了一般屹蚊。 火紅的嫁衣襯著肌膚如雪厕氨。 梳的紋絲不亂的頭發(fā)上进每,一...
    開封第一講書人閱讀 49,792評論 1 290
  • 那天,我揣著相機與錄音命斧,去河邊找鬼田晚。 笑死,一個胖子當(dāng)著我的面吹牛国葬,可吹牛的內(nèi)容都是我干的贤徒。 我是一名探鬼主播,決...
    沈念sama閱讀 38,933評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼汇四,長吁一口氣:“原來是場噩夢啊……” “哼接奈!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起通孽,我...
    開封第一講書人閱讀 37,701評論 0 266
  • 序言:老撾萬榮一對情侶失蹤序宦,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后背苦,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體互捌,經(jīng)...
    沈念sama閱讀 44,143評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,488評論 2 327
  • 正文 我和宋清朗相戀三年糠惫,在試婚紗的時候發(fā)現(xiàn)自己被綠了疫剃。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,626評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡硼讽,死狀恐怖巢价,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情固阁,我是刑警寧澤壤躲,帶...
    沈念sama閱讀 34,292評論 4 329
  • 正文 年R本政府宣布,位于F島的核電站备燃,受9級特大地震影響碉克,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜并齐,卻給世界環(huán)境...
    茶點故事閱讀 39,896評論 3 313
  • 文/蒙蒙 一漏麦、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧况褪,春花似錦撕贞、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,742評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春号涯,著一層夾襖步出監(jiān)牢的瞬間目胡,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工链快, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留誉己,地道東北人。 一個月前我還...
    沈念sama閱讀 46,324評論 2 360
  • 正文 我出身青樓久又,卻偏偏與公主長得像巫延,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子地消,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,494評論 2 348

推薦閱讀更多精彩內(nèi)容