一、接口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中繼承一個就行
}
代碼示例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();
}
一、開發工具:
記事本
增強型的記事本(EditPlus)
集成開發環境(IDE:Integrated Development Environment)
二、繼承開發環境:
Eclipse:日食,免費,開源,可擴展
MyEclipse:收費
Idea:收費
二、Downloads----最新版本-----download packages//下載綠色版本的壓縮包
三、選擇 企業級開發的版本,Eclipse IDE for Enterprise Java Developers
四、選擇下載源:選擇中國的便可
因爲下載的是綠色版本的安裝包,直接加壓縮便可
看到了eclipse.exe就說明解壓成功了
一、雙擊eclipse.exe工具,看到以下提示框:
說明:一、若是沒有看到這個界面,那說明沒有把jdk安裝好、或者path環境變量沒有配置好;二、Workspace:工做空間,用於存儲一個一個的工程的地方,說白了,就是存儲代碼的地方。
二、點擊launch,開始,看到歡迎界面,關閉歡迎界面,看到開發的主界面:
三、在工程的資源管理器中,鼠標右鍵,選擇new,選擇other,以下界面:
四、選擇java Project,以下界面:
五、添加工程名稱,點擊finish,以下界面:
說明:表示要作打開java工程,就須要切換到java工程經常使用的小窗口組合上去
六、點擊OpenPerspective,在左側的工程中,選擇src,右鍵,選擇new,選擇class,以下:
七、填寫類名、包名,勾上主方法,點擊finish
八、編輯代碼,無需編譯(自動編譯),點擊綠色按鈕來運行
一、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
一、配置字體:
使用ctrl + 放大字體
使用ctrl - 縮小字體
二、去掉不須要的註釋:
三、去掉懸浮提示:
說明:須要看懸浮提示的時候使用鍵盤F2
一、alt + /:自動生成代碼,代碼格式記憶不清楚時,使用這個來作一些提示:
二、舉例:
Main + alt + /:生成主方法
Syso + alt + /:生成輸出語句
自動生成類名、對象名、提示構造方法
遍歷數組:找到最近的一個數組遍歷
一、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方法