2019-08-12 Day 12 java學習 6

知識點

抽象類 abstract

所有的類都是用來描繪對象的,如果一個類中沒有包含足夠的信息來描繪一個具體的對象,這樣的類就是抽象類。
抽象類除了不能實例化對象之外,類的其它功能依然存在,成員變量、成員方法和構造方法的訪問方式和普通類一樣。
抽象類必須被繼承,才能被使用。
一個類只能繼承一個抽象類,而一個類卻可以實現多個接口。

  • 使用extends來繼承一個抽象類
  • 如果繼承一個抽象類 就必須實現抽象類里面的抽象方法
  • 如果不實現抽象方法,也可以把這個類定義為抽象類

接口 interface

定義一套方法 用于對象之間的通信

  • 不要把接口理解為某一個物理存在的東西 VGA TpeC
  • 接口就是定義一套規則/規范
  • 接口里面默認變量都是 static final 常量
  • 默認情況下不需要自己寫public static final
  • 不能定義變量
  • 不能定義代碼塊
  • 不能定義構造方法
  • 不能添加普通/對象/實例方法
  • 只有抽象方法
  • 默認就是public abstract
  • 如果需要定義已經有實現的方法 使用default
  • 可以定義內部類
  • 使用implements實現一個接口
  • 一個類可以實現多個接口
  • 一個接口可以繼承多個接口

技術的使用

抽象類

abstract class BaseAndroidStudy{
        //定義一個代碼塊
        {
            System.out.println("鍛煉身體");
        }

        //定義一個屬性  用于保存數據
        public String javaBook;
        public Dream dream;

        public BaseAndroidStudy(String javaBook,String dream){
            this.javaBook = javaBook;

            this.dream = new Dream();
            this.dream.name = dream;
        }

        //定義一個靜態的常量
        public final String CBOOK = "C premier";

        //定義一個抽象方法  不需要實現  子類來實現
        public abstract void studyC();

        //定義一個普通方法  已經確定了這個方法的具體實現
        public void studyJava(){
            System.out.println("參加東哥的Java培訓班");
        }

        //定義一個內部類用于管理每個人的夢想
        class Dream{
            public String name;

            public void show(){
                System.out.println("我的夢想是:"+name);
            }
        }
    }

    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 testInterface{
        int I = 100;
        int COUNT = 20;

        void test();

        class inner{
            int name;
            public void show(){
                System.out.println("內部類");
            }
        }
    }interface testInterface1{
        int I = 100;
        int COUNT = 20;

        void test1();

        class inner{
            int name;
            public void show(){
                System.out.println("內部類");
            }
        }
    }

    class LYClass implements testInterface,testInterface1{

        @Override
        public void test() {

        }@Override
        public void test1() {

        }
    }

    class Te{
        public static void main(String[] args){
            LYClass ly = new LYClass();
            testInterface t = new LYClass();
        }
    }

技術的實際使用

按鈕的模擬

例子
public class Main {
    public static void main(String[] args){
        MainActivity main = new MainActivity();
        main.touch();
    }
}
public class MainActivity extends Activity implements View.onClickListenner{
    Button btn;
    ImageView img;
    @Override
    public void onCreate() {
        btn = new Button("HelloWorld","red");
        img = new ImageView("胡歌");
        add(btn);
        add(img);

        btn.listenner = new View.onClickListenner() {
            @Override
            public void onClick(View v) {
                System.out.println("按鈕被點擊了");
            }
        };
        img.listenner = new View.onClickListenner() {
            @Override
            public void onClick(View v) {
                System.out.println("圖片被點擊了");
            }
        };
    }

    @Override
    public void onDestory() {

    }

    @Override
    public void onClick(View v) {

    }
    public void  touch(){
        btn.getTouchEvent();
        img.getTouchEvent();
    }
}
    public ArrayList<View> chlids = new ArrayList<>();
    public abstract void onCreate();
    public abstract void onDestory();

    public void add(View v) {
        if (v instanceof Button) {
            Button b = (Button) v;
            System.out.println(b.title+"的按鈕顯示到界面上");
        }
        if (v instanceof ImageView) {
            ImageView i = (ImageView) v;
            System.out.println(i.picture+"的圖片顯示到界面上");
        }
        chlids.add(v);
    }
}
public class Button extends View {
    String title;
    String titleColor;

    public Button(String title,String titleColor){
        this.title = title;
        this.titleColor = titleColor;
    }
}
public class ImageView extends  View {
    String picture;
    public ImageView(String picture){
        this.picture = picture;
    }
}
public class View {
    String backgroundColor;
    String borderColor;

    onClickListenner listenner;
    public interface onClickListenner{
        void onClick(View v);
    }

    public void getTouchEvent(){
        listenner.onClick(this);
    }
}

隨筆

感覺自己現在處于一種懂與不懂的中間狀態,demo的要求發下來,往往很快就有了思路。但是寫完之后,當個講的時候,又和他的有很多不同,看完可以發現自己有很多不足。然而發現了自己的不足也彌補不了,也許這個demo是懂了,但demo的多種多樣,下一個demo會暴露自己的許多缺點。這種學習了,卻沒有進一步的感覺是真的讓人不爽。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。