面向?qū)ο笕筇匦裕?/p>
封裝,繼承,多態(tài)盛龄;
封裝:
1.概念:
將類的某些信息隱藏在類的內(nèi)部,不允許外部程序直接訪問商架,而是通過該類提供的方法來實現(xiàn)對隱藏信息的操作和訪問;
2.好處:
a.只能通過規(guī)定的方法訪問數(shù)據(jù)
b.隱藏類的實例細節(jié)芥玉,方便修改和實現(xiàn)
封裝的實現(xiàn)步驟:
1.修改屬性的可見性蛇摸,設(shè)為private
2.創(chuàng)建getter/setter方法,用于屬性的讀寫
get關(guān)鍵字加屬性名稱灿巧,set關(guān)鍵字加屬性名稱
get方法:獲取赶袄,無參有返回?; ?set方法:設(shè)置抠藕,有參無返回
3.在getter/setter方法中加入屬性控制語句弃鸦,對屬性值的合法性進行判斷;
例:
public class Test1 {
private int a; //封裝屬性
private int b;
private int c;
public Test1(int aa, int bb, int cc) {
a = aa; // 在構(gòu)造方法中賦值
b = bb;
c = cc;
}
public void show() {
System.out.println(a + "" + b + c);
}
public int getA() { //get屬性
return a;
}
public int getB() {
return b;
}
public int getC() {
return c;
}
public void setA(int aa) {//set屬性
a = aa;
}
public void setB(int bb) {
b = bb;
}
public void setC(int cc) {
c = cc;
}
public void show2() {
System.out.println("" + a + b + c);
}
}
根據(jù)以上代碼,我們能發(fā)現(xiàn)除了用set方法賦值外颜说,還可以用構(gòu)造方法賦值汰聋;
包:
1.包的作用:
管理Java文件门粪;
解決同名文件沖突;
2..定義包:package 包名
注:必須放在Java源程序的第一行
包名中間可以使用"."號隔開
eg:com.imooc.MyClass
3.系統(tǒng)中的包
java.(功能)..(類)
java.lang.(類) 包含java語言基礎(chǔ)的類
java.util.(類) 包含java語言中各種工具類
java.io.(類) 包含輸入烹困。輸出相關(guān)功能的類
訪問修飾符:
可以修飾屬性和方法的訪問范圍玄妈;
private:只能在本類中被訪問;
默認:能在本類和同包中被訪問;
protected:能在本類拟蜻,子類绎签,同包中被訪問;
public:能在所有的類中被訪問酝锅;
this關(guān)鍵字:
1.this關(guān)鍵字代表當前的對象:
this.屬性 操作當前對象的屬性
this.方法 調(diào)用當前對象的方法
2.封裝對象的屬性的時候诡必,經(jīng)常會使用this關(guān)鍵字
Java中內(nèi)部類:
內(nèi)部類( Inner Class )就是定義在另外一個類里面的類。與之對應(yīng)搔扁,包含內(nèi)部類的類被稱為外部類。
內(nèi)部類的主要作用如下:
1. 內(nèi)部類提供了更好的封裝稿蹲,可以把內(nèi)部類隱藏在外部類之內(nèi)苛聘,不允許同一個包中的其他類訪問該類
2. 內(nèi)部類的方法可以直接訪問外部類的所有數(shù)據(jù)涂炎,包括私有的數(shù)據(jù)
3. 內(nèi)部類所實現(xiàn)的功能使用外部類同樣可以實現(xiàn)焰盗,只是有時使用內(nèi)部類更方便
內(nèi)部類可分為以下幾種:
成員內(nèi)部類
靜態(tài)內(nèi)部類
方法內(nèi)部類
匿名內(nèi)部類
調(diào)用:
調(diào)用內(nèi)部類例:
Helloworld he=new Helloworld();
Helloworld.Inner in=he.new Inner( );
先創(chuàng)建外部類對象璧尸,
然后定義內(nèi)部類對象時,先用外部類名.內(nèi)部類名熬拒,new也要用外部類對象名.new爷光;
成員內(nèi)部類的使用方法:
1、 Inner 類定義在 Outer 類的內(nèi)部,相當于 Outer 類的一個成員變量的位置活烙,Inner 類可以使用任意訪問控制符重贺,如 public 怯晕、 protected 谭期、 private 等
2、?Inner 類中定義的 test() 方法可以直接訪問 Outer 類中的數(shù)據(jù)狰贯,而不受訪問控制符的影響幔摸,如直接訪問 Outer 類中的私有屬性a
3驱负、?定義了成員內(nèi)部類后,必須使用外部類對象來創(chuàng)建內(nèi)部類對象患雇,而不能直接去 new 一個內(nèi)部類對象,即:內(nèi)部類 對象名 = 外部類對象.new 內(nèi)部類( );
4酪术、?編譯上面的程序后翠储,會發(fā)現(xiàn)產(chǎn)生了兩個 .class 文件
其中绘雁,第二個是外部類的 .class 文件,第一個是內(nèi)部類的 .class 文件援所,即成員內(nèi)部類的 .class 文件總是這樣:外部類名$內(nèi)部類名.class
靜態(tài)內(nèi)部類:
1住拭、 靜態(tài)內(nèi)部類不能直接訪問外部類的非靜態(tài)成員挪略,但可以通過new 外部類().成員的方式訪問
2、?如果外部類的靜態(tài)成員與內(nèi)部類的成員名稱相同滔岳,可通過“類名.靜態(tài)成員”訪問外部類的靜態(tài)成員澈蟆;如果外部類的靜態(tài)成員與內(nèi)部類的成員名稱不相同,則可通過“成員名”直接調(diào)用外部類的靜態(tài)成員
3卓研、?創(chuàng)建靜態(tài)內(nèi)部類的對象時趴俘,不需要外部類的對象睹簇,可以直接創(chuàng)建內(nèi)部類 對象名= new 內(nèi)部類();
方法內(nèi)部類:
方法內(nèi)部類就是內(nèi)部類定義在外部類的方法中,方法內(nèi)部類只在該方法的內(nèi)部可見寥闪,即只在該方法內(nèi)可以使用太惠。
注意:
由于方法內(nèi)部類不能在外部類的方法以外的地方使用,因此方法內(nèi)部類不能使用訪問控制符和 static 修飾符疲憋。
第二章結(jié)束凿渊,努力努力努力,感謝慕課網(wǎng)