10_接口丶內部類丶權限修飾符

Day10筆記

課程內容

一、接口java

二、內部類express

三、Eclipse數組

四、包eclipse

五、權限修飾符ide

接口

概述

一、廣義的接口:一切定義規則的都是接口,一切用於二者交互的方式都是接口工具

二、Java中的接口:用於定義方法名稱、方法功能的規則學習

三、好處:開發工具

        將【方法的實現】和【方法的使用】分離開,二者的耦合性就下降了字體

        提升了開發效率網站

接口的特色

一、接口使用interface關鍵字聲明

        interface 接口名稱 {

                方法的聲明;

}

   編譯完成以後,仍然是一個.class的字節碼文件

二、接口中的內容:

        能夠聲明抽象方法:只能有方法的聲明,不能有方法的實現

        做用:規定方法的名稱、功能、返回值、參數

三、接口的實現類:

        實現:定義一個類,將接口中的抽象方法全都實現,這個過程,就稱爲「實現接口」

        關鍵字:implements,格式:

                class  實現類類名  implements  接口名 {

                        對接口中的全部抽象方法進行重寫(實現)

}

四、接口的實例化:

        結論:接口不能建立對象

        解決:經過實現類來實例化,定義實現類,實現接口中的方法,實現類建立對象並調用               方法

        說明:可使用接口類型的引用,指向實現類對象(接口的多態)

五、接口的實現類的前途:

        一、若是實現類中沒有重寫完接口中的所有方法,那麼該類型仍是一個抽象類,不能建立對象;

        二、若是實現類重寫了接口中全部的抽象方法,那麼該類型就能夠變成一個具體類,能夠建立對象。

代碼示例

class Demo01_接口特色 {

         public static void main(String[] args) {

                  MyImpl mi = new MyImpl();

                  mi.test1();

                  mi.test2();

                  //接口的引用,指向實現類的對象:接口的多態

                  MyInter m = new MyImpl();

                  m.test1();

                  m.test2();

         }

}

 

interface MyInter {

         public abstract void test1();

         public abstract void test2();

}

 

class MyImpl implements MyInter {

         @Override

         public void test1() {

                  System.out.println("test1");

         }

 

         @Override

         public void test2() {

                  System.out.println("test2");

         }

}

接口中成員的特色

一、成員變量:

        不能定義變量,只能定義常量

        默認會在成員變量前面加上public static final關鍵字,建議手動加上

二、構造方法:

        沒有

        一、接口不須要建立對象,因此不須要有構造方法

        二、接口的實現類的構造方法,不會訪問所實現的接口的構造方法,由於實現類有本身的父類,訪問的是父類的構造方法

三、成員方法:

        只能是抽象方法,不能是非抽象方法

        默認會在成員方法前面加上public abstract,建議手動加上

代碼示例

class Demo02_接口中成員的特色 {

         public static void main(String[] args) {

                  //說明a前面默認添加了一個static

                  System.out.println(MyInter.a);

                  //說明a前面默認添加了一個final,變成了常量

                  //MyInter.a = 20;

         }

}

 

interface MyInter {

         public static final int a = 10;

 

         //void test1();

}

 

class MyImpl extends Object implements MyInter {

        

}

類與類、類與接口、接口與接口的關係

一、類與類:

        繼承的關係,關鍵字extends

        支持單繼承、不支持多繼承、支持多層繼承

二、類與接口:

        實現的關係,關鍵字implements

        能夠單實現,也能夠多實現(一個實現類,能夠同時實現多個接口:一個兒子能夠有多個乾爹),沒有多層實現(實現類一旦實現一個接口,就變成了類,不能再被實現了)

        【多實現的格式】:

        class 實現類類名 implements 接口1, 接口2...{

                重寫全部接口中的全部抽象方法

}

 

一個類,能夠在繼承一個父類的同時,實現多個接口

【實現格式】:

class 類名 extends 父類類名 implements 接口1, 接口2... {

         重寫父類和全部接口中的全部抽象方法

}

三、接口與接口

        繼承關係,關鍵字extends

        支持單繼承,支持多繼承,支持多層繼承

        【多繼承】格式:

        interface Inter1 extends Inter2, Inter3 {

                繼承了Inter2和Inter3的全部抽象方法

}

 

四、接口和抽象類的比較:

        一、語法上:接口能夠多實現,抽象類只能單繼承

        二、設計:

                抽象類:用於定義事物自己具備的功能和特徵,定義的是最原始的固有的描述

                接口:用於定義擴展出來的功能和方法,定義的通常是後天學習訓練而來的能力

代碼示例1

class Demo03_接口與類的關係 {

         public static void main(String[] args) {

                  System.out.println("Hello World!");

         }

}

 

interface A {

         public abstract void testA();

}

 

interface B {

         public abstract void testB();

}

 

abstract class C {

         public void testC1() {

                  System.out.println("c1");

         }

 

         public abstract void testC2();

}

 

class D extends C implements A, B {

         @Override

         public void testC2() {

                  System.out.println("c2");

         }

 

         @Override

         public void testA() {

                  System.out.println("a");

         }

 

         @Override

         public void testB() {

                  System.out.println("b");

         }

}

代碼示例2

class Demo04_接口與接口的關係 {

         public static void main(String[] args) {

                  System.out.println("Hello World!");

         }

}

 

interface Inter1 {

         public abstract void test1();

}

 

interface Inter2 {

         public abstract void test1();

}

 

interface Inter3 extends Inter1, Inter2 {

         //隨意從Inter1或者Inter2中繼承一個就行

}

USB接口案例

代碼示例1

class Demo05_USB接口案例 {

         public static void main(String[] args) {

                  Computer c = new Computer();

                  Mouse m = new Mouse();

                  c.開機();

                  c.useMouse(m);

                  c.關機();

         }

}

 

class Computer {

         public void 開機() {

                  System.out.println("電腦啓動");

         }

 

         public void useMouse(Mouse m) {

                  m.use();

         }

 

         public void 關機() {

                  System.out.println("關閉電源");

         }

}

 

class Mouse {

         public void use() {

                  System.out.println("鼠標移動");

         }

}

代碼示例2

class Demo06_USB接口案例改進 {

         public static void main(String[] args) {

                  Computer c = new Computer();

                  Mouse m = new Mouse();

                  KeyBoard kb = new KeyBoard();

                  c.開機();

                  c.useUSB(m);

                  c.useUSB(kb);

                  c.關機();

 

         }

}

 

class Computer {

         public void 開機() {

                  System.out.println("電腦啓動");

         }

 

         public void useUSB(USB usb) {

                  usb.use();

         }

 

         public void 關機() {

                  System.out.println("關閉電源");

         }

}

 

interface USB {

         public abstract void use();

}

 

class Mouse implements USB {

         public void use() {

                  System.out.println("鼠標移動");

         }

}

 

class KeyBoard implements USB {

         public void use() {

                  System.out.println("鍵盤錄入");

         }

}

內部類

概述

一、定義在內部的類,就是內部類

二、根據內部類位置的不一樣:

        成員內部類:類中方法外

                普通的成員內部類

                私有的成員內部類

                靜態的成員內部類

        局部內部類:方法中

三、表現形式的不一樣:

        有名字的內部類

        匿名內部類【經常使用】

普通的成員內部類

一、定義位置:

        類中方法外

二、定義格式:

        直接使用class定義內部類便可

三、內部類特色:

        一、能夠訪問外部類的成員,包括私有成員(由於內部類也是外部類的成員之一)

        二、外部類或者其餘類訪問內部類的成員,必須先建立內部類對象

四、建立對象的格式:   

        外部類類名.內部類類名 內部類對象名 = new 外部類類名().new 內部類類名();

        內部類對象名.內部類的成員

代碼示例

class Demo07_普通的成員內部類 {

         public static void main(String[] args) {

                  Body.Heart bh = new Body().new Heart();

                  bh.speak();

         }

}

 

class Body {

         private double height = 149.0;

 

         class Heart {

                  int beats = 90;

 

                  public void speak() {

                           System.out.println(height + "..." + beats + "...心臟撲通撲通的跳");

                  }

         }

 

         public void test() {

                  Heart h = new Heart();

                  System.out.println(h.beats);

         }

}

私有的成員內部類

一、在普通成員內部類的基礎上,加一個private關鍵字修飾這個內部類

二、訪問方式:

        一、其餘類,不能直接訪問私有的成員內部類

        二、在外部類中,定義一個公有的訪問方式,建立私有成員內部類對象,調用對象方法,未來可讓外界間接地訪問私有成員內部類,而且調用私有成員內部類方法

代碼示例

class Demo08_私有成員內部類 {

         public static void main(String[] args) {

                  Body b = new Body();

                  b.useShen();

         }

}

 

class Body {

         private double height = 149.0;

 

         private class Shen {

                  int age = 40;

 

                  public void go() {

                           System.out.println(height + "..." + age + "...該走心得時候別找我!!");

                  }

         }

 

         public void useShen() {

                  Shen s = new Shen();

                  s.go();

         }

}

靜態的成員內部類

一、在普通成員內部類的基礎上,加一個static關鍵字修飾這個內部類

二、在類中的靜態成員,訪問的時候不須要建立該靜態成員所在類的對象,能夠直接經過類名訪問;因此靜態成員內部類也不須要建立外部類對象,就能夠直接訪問;可是靜態成員內部類中的非靜態成員,須要先建立靜態內部類對象以後,才能訪問。

三、一個類是否須要建立對象,不取決於該類是否靜態,而是取決於你要訪問的是該類的靜態成員仍是非靜態成員。

四、建立靜態內部類對象的格式:

        外部類類名.內部類類名 內部類對象名 = new 外部類類名.內部類類名();

代碼示例

class Demo09_靜態的成員內部類 {

         public static void main(String[] args) {

                  Body.Gan bg = new Body.Gan();

                  bg.speak();

         }

}

 

class Body {

         private static double height = 149.0;

 

         static class Gan {

                  String color = "black";

 

                  public void speak() {

                           System.out.println(height + "..." + color + "...求你了別喝了受不了了");

                  }

         }

}

 

局部內部類

一、定義在方法中的內部類

二、定義在方法中的任何內容(不管是局部變量、仍是局部內部類),在方法以外,都不能直接訪問

三、只能在方法中,建立局部內部類對象,調用內部類對象的方法。外界調用內部類所在的方法,間接地訪問方法中的內部類

代碼示例

class Demo10_局部內部類 {

         public static void main(String[] args) {

                  test();

         }

 

         public static void test() {

                  String need = "繼續吃";

                  class Wei {

                           int size = 666;

 

                           public void speak() {

                                    System.out.println(need + "..." + size + "...你吃不是由於我餓,是由於嘴巴寂寞");

                           }

                  }

 

                  Wei w = new Wei();

                  w.speak();

         }

}

匿名內部類

一、沒有名字的內部類

二、定義匿名內部類的前提:

        一、有一個父類

        二、或者實現了某一個接口

三、定義一個匿名內部類對象的格式:

        new 父類類型或者接口類型() {

                重寫父類中的或者接口中的方法;

}

四、本質:

        建立了一個接口的實現類對象

        或者是一個父類的子類對象

        說明:更多強調的是對象和某個接口或者父類的關係,而不是對象所屬類的名稱

代碼示例

class Demo11_匿名內部類 {

         public static void main(String[] args) {

                  IPlayImpl ip = new IPlayImpl();

                  ip.playGame();

 

                  new IPlay() {

                           @Override

                           public void playGame() {

                                    System.out.println("wanyouxi");

                           }

                  }.playGame();

 

                  IPlay i = new IPlay() {

                           @Override

                           public void playGame() {

                                    System.out.println("玩youxi");

                           }

                  };

                  i.playGame();

         }

}

 

class IPlayImpl implements IPlay {

         @Override

         public void playGame() {

                  System.out.println("玩遊戲");

         }

}

 

interface IPlay {

         public abstract void playGame();

}

Eclipse

概述

一、開發工具:

        記事本

        增強型的記事本(EditPlus)

        集成開發環境(IDE:Integrated Development Environment)

二、繼承開發環境:

        Eclipse:日食,免費,開源,可擴展

        MyEclipse:收費

        Idea:收費

Eclipse的下載

一、www.eclipse.org

二、Downloads----最新版本-----download packages//下載綠色版本的壓縮包

三、選擇 企業級開發的版本,Eclipse IDE for Enterprise Java Developers

四、選擇下載源:選擇中國的便可

Eclipse的安裝

因爲下載的是綠色版本的安裝包,直接加壓縮便可

看到了eclipse.exe就說明解壓成功了

Eclipse的簡單使用

一、雙擊eclipse.exe工具,看到以下提示框:

 

        說明:一、若是沒有看到這個界面,那說明沒有把jdk安裝好、或者path環境變量沒有配置好;二、Workspace:工做空間,用於存儲一個一個的工程的地方,說白了,就是存儲代碼的地方。

二、點擊launch,開始,看到歡迎界面,關閉歡迎界面,看到開發的主界面:

  

三、在工程的資源管理器中,鼠標右鍵,選擇new,選擇other,以下界面:

  

四、選擇java Project,以下界面:

  

五、添加工程名稱,點擊finish,以下界面:

   

        說明:表示要作打開java工程,就須要切換到java工程經常使用的小窗口組合上去

六、點擊OpenPerspective,在左側的工程中,選擇src,右鍵,選擇new,選擇class,以下:

 

七、填寫類名、包名,勾上主方法,點擊finish

  

八、編輯代碼,無需編譯(自動編譯),點擊綠色按鈕來運行

 

View和Perspective

一、View:在eclipse中運行的一個一個的小窗口,每一個小窗口都有本身的特殊功能

        Package Explorer:包資源管理器,用於查看整個工做空間中的全部工程

        代碼編輯的view:代碼編輯的做用

        Console:用於顯示運行結果的view(控制檯)

        Outline:大綱view,顯示當前類型中的全部屬性、方法、內部類等

二、有關view的一個操做:

        本身操做顯示哪些view

        Window----show view----選擇本身須要的view便可

三、Perspective:

        一、作不一樣類型的開發,須要使用到不一樣的view組合

        二、不一樣的view組合就稱爲不一樣的Perspective

        三、常常作的開發須要使用哪些view,已經比較固定了,因此eclipse給咱們提供了經常使用的Perspective

四、經常使用的Perspective:

        Java Perspective:用於作基礎的java開發,包括了package explorer、console、outline、代碼編輯view

        JavaEE Perspective:用於作開發網站的java開發,包括了Project explorer、Mark、Server、Data Source Explorer、outline等view

        Debug Perspective:用於作程序的調試,能夠實現程序的單步運行,包括了debug、breakpoints、variables、expressions等view

五、有關Perspective的操做:

        一、窗口亂了,能夠以下操做:

                  Window----perspective----reset Perspective

        二、能夠自定義本身須要的Perspective:

                Window----Perspective----save Perspective as:新建本身經常使用的perspective

Eclipse的經常使用配置

一、配置字體:

        使用ctrl + 放大字體

        使用ctrl - 縮小字體

二、去掉不須要的註釋:

       

三、去掉懸浮提示:

 

        說明:須要看懸浮提示的時候使用鍵盤F2

Eclipse的內容輔助鍵

一、alt + /:自動生成代碼,代碼格式記憶不清楚時,使用這個來作一些提示:

二、舉例:

        Main + alt + /:生成主方法

        Syso + alt + /:生成輸出語句

        自動生成類名、對象名、提示構造方法

        遍歷數組:找到最近的一個數組遍歷

Eclipse的經常使用快捷鍵

一、ctrl + n:新建,新建文件、新建類、新建包、新建工程

二、Ctrl + shift + f:格式化代碼

三、Ctrl + shift + o:刪除不須要的導包語句,補充須要的導包語句

四、Ctrl + /:給選中的代碼進行單行註釋;給選中的代碼去掉單行註釋

五、Ctrl + shift + /:給選中的代碼進行一個多行註釋

六、Ctrl + shift + \:給選中的代碼去掉多行註釋

七、Alt + ↑:將選中的代碼向上移動一行

八、Ctrl + alt + ↓:將選中的代碼向下複製一行

九、Ctrl + d:刪除選中的行,連換行符也一塊兒刪掉

十、Alt + shift + r:給變量重命名(全部該變量一塊兒更名字)

十一、F2:修改類名,全部引用該類型的地方都會發生改變

基本的編輯快捷鍵:

        Ctrl :A、C、X、V、Z、Y

快速生成一個自定義類的方法

一、自定義類中的各類方法,可使用快捷鍵生成

二、類中的成員變量,須要本身定義,成員變量的內容沒法預測;

三、Alt + shift + s:操做有關源代碼的快捷鍵

四、C:從父類生成各類構造方法(通常是空參構造)

五、O:根據本身的字段生成對應的構造方法

六、R:生成字段對應的get、set方法

七、S:生成字段對應的toString方法

相關文章
相關標籤/搜索