馬士兵 J2SE第三章 面向?qū)ο缶幊?個(gè)人學(xué)習(xí)筆記
《馬士兵 J2SE第三章 面向?qū)ο缶幊?個(gè)人學(xué)習(xí)筆記》由會員分享,可在線閱讀,更多相關(guān)《馬士兵 J2SE第三章 面向?qū)ο缶幊?個(gè)人學(xué)習(xí)筆記(31頁珍藏版)》請?jiān)谘b配圖網(wǎng)上搜索。
1、尚學(xué)堂科技_馬士兵_JAVA視頻教程_J2SE_5.0_第03章_面向?qū)ο?聽課筆記 09.12.5- by LoveXForce 第三章. 面向?qū)ο缶幊? 一、 面向?qū)ο缶幊趟枷? 從現(xiàn)實(shí)世界中客觀存在的事物出發(fā)來構(gòu)造軟件系統(tǒng),并在系統(tǒng)的構(gòu)造中盡可能運(yùn)用人類的自然思維方式 面向?qū)ο蟾訌?qiáng)調(diào)運(yùn)用人類在日常的思維邏輯中經(jīng)常才贏的思想方法與原則,如抽象分類,繼承,聚合,多態(tài) 二、 對象和類的概念 1. 對象用計(jì)算機(jī)語言對問題域中食物的描述,對象通過“屬性(attribute)”和“方法(method)”來分別對應(yīng)事物所具有的靜態(tài)屬性和動態(tài)屬性 對象是屬性(成員變量)和方法的集合。{一類事
2、物的具體的某一個(gè)東西(符合這類事物的具體特征的某個(gè)東西)叫對象} 2. 類是同種對象的集合與抽象,類中定義了這一類對象所應(yīng)具有的靜態(tài)和動態(tài)屬性。 關(guān)系:類可以看成一類對象的模板,對象可以看成該類的一個(gè)具體實(shí)例,瓶子是一個(gè)類,某個(gè)瓶子就是對象 實(shí)體 類 對象 實(shí)體 對象 類 車 輪 車 窗 …… int輪 車 char窗 …… 代碼 實(shí)體 職員A 職員 -姓名 -年齡 -目前工資 +顯示姓名() +顯示年齡() +修改姓名() +領(lǐng)取工資() 職員A:職員 姓名 = A 年齡 = 30 目前工資= 800
3、職員B:職員 姓名 = B 年齡 = 350 目前工資= 900 認(rèn)識過程: 分析過程 三、 面向?qū)ο笤O(shè)計(jì)思想和步驟: (1) 分析問題中有哪些類那些對象 (2) 分析這些對象中應(yīng)該具有的屬性和方法 (3) 分析類與類之間的關(guān)系 四、 Java與面向?qū)ο? 1. 對象是Java程序的核心,在java程序中“萬事萬物皆對象”。 2. 對象可以看成靜態(tài)屬性(成員變量)和動態(tài)屬性(方法)的封裝體 3. 類是用來創(chuàng)建統(tǒng)一類型的對象的“模板”,在一個(gè)類中定義了該類對象所應(yīng)具有的成員變量以及方法 4. J2SDK提供了很多類供編程人員使用,編程人員也可以自定義自己
4、的類
五、 Java類的定義
類的定義主要由成員變量和方法組成
聲明成員變量: [
5、 = 20; void Person(int _id, int _age) { id = _id; age = _age; } public static void main(String[] args) { Person tom = new Person(); tom.Person(1, 25); //Person jerry = new Person(); Point p = new Point(); } } class Point { Point() {} int x; int y; } 六、 成員變量 成員變量可
6、以使用java語言中任何一種數(shù)據(jù)類型(包括基本類型和引用類型),作用范圍為整個(gè)類體 注意: 局部變量必須賦初試值才可以使用, 成員變量不用初始化,java系統(tǒng)會給你賦初始值 Byte,short,int----->0 Long ----->0L char ----->’\u0000’ float ----->0.0F double ----->0.0D bloolean ----->false 所有引用類型 ----->Null java中成員變量和局部變量的區(qū)別 比較項(xiàng)目
7、 位置 作用范圍 賦初值問題 修飾 定義 存儲位置 分類 引用問題 局部變量 方法或語句塊內(nèi)部(方法的參數(shù)) 小 方法體.語句塊內(nèi)部 必須手動初始化 不能被控制修飾符及static修飾 可以定義為final型 棧 所有類的成員變量可以通過this來引用。 成員變量: 方法外部、類的內(nèi)部 大 整個(gè)類體 自動初始化(被final修飾且沒有static的必須顯式賦值) 能被控制修飾符及static修飾 可以定義為final型 堆 1實(shí)例變量 2類變量(static靜態(tài)變量) 七、 引用類型(C中的指針,占兩塊內(nèi)存) 除了java語言
8、中基本類型以外的變量類型 Java中的對象是通過引用對其操作的 內(nèi)存值 /* 聲明string類型的引用變量,但是沒使它指向一個(gè)對象*/ String s null /* 使用new語句創(chuàng)建一個(gè)String類型的對象并 用S指向它,以后可以通過S完成對其的操作*/ 0X3a123b 堆內(nèi)存 …… …… S = new String (“hello world!”); 0X3a123b
9、 如何在內(nèi)存中區(qū)分類和對象? 類是靜態(tài)的概念,代碼區(qū) 獨(dú)享是new出來的,位于堆內(nèi)存,類的每個(gè)成員變量在不同的對象中都有不同的值(除了靜態(tài)變量) 而方法只有一份,執(zhí)行的時(shí)候才占用內(nèi)存 八、 對象的創(chuàng)建和使用 1. 必須使用new關(guān)鍵字創(chuàng)建對象 2. 使用:對象(引用) .隊(duì)員變量 來引用對象的成員變量 3. 使用:對象(引用).方法(參數(shù)列表)來調(diào)用對象的方法 4. 同一對象的每個(gè)對象有不同的成員變變量存儲空間 5. 同一類的每個(gè)對象共享該類的方法 九、 Java的方法定義 Java的方法類似于其他語言的函數(shù),是一段用來完成特定功能的代碼片段,聲明格式為: [修飾
10、符1 修飾符2 …..] 返回值類型 方法名( 形式參數(shù)列表 ){ Java 語句;… … … } 語法解釋: 1. 形式參數(shù):在方法被調(diào)用時(shí)用于接收外界輸入的數(shù)據(jù)。 2. 實(shí)參:調(diào)用方法時(shí)實(shí)際傳給方法的數(shù)據(jù)。 3. 返回值:方法在執(zhí)行完畢后返回給調(diào)用它的環(huán)境的數(shù)據(jù)。 4. 返回值類型:事先約定的返回值的數(shù)據(jù)類型,無返回值,必須給出返回類型viod。 A. Java語言中使用下述形式調(diào)用方法:對象名.方法名(實(shí)參列表) B. 實(shí)參的數(shù)目、數(shù)據(jù)類型和次序必須和所調(diào)用方法聲明的形式列表匹配。 C. return語句中止方法的運(yùn)行并指定要返回的數(shù)據(jù)。 Java中進(jìn)行
11、函數(shù)調(diào)用中傳遞參數(shù)時(shí),遵循傳遞的原則: 基本類型傳遞的是該數(shù)據(jù)本身,引用類型傳遞的是對象的引用,不是對象本身 十、 類和對象關(guān)系(內(nèi)存中) 03_JAVA中的面向?qū)ο笈c內(nèi)存解析_1.avi 04_JAVA中的面向?qū)ο笈c內(nèi)存解析_2.avi 類C的代碼 ( code seg) ( heap seg) XXXX XXXX XXXX XXXX C1.i C1.j C2.i C2.j C1 C2 Class C{ int i; int j; ….main…{ C c1 = new C( ); C
12、 c2 = new C( ); } } 十一、 構(gòu)造函數(shù) 2009-12-9 13:44 04_JAVA中的面向?qū)ο笈c內(nèi)存解析_2.avi 構(gòu)造函數(shù)是定義在java類中的一個(gè)用來初始化對象的函數(shù) 1. 構(gòu)造函數(shù)名字與類的名字相同,大小寫也保持一致 2. 使用new+構(gòu)造方法創(chuàng)建一個(gè)新的對象 3. 構(gòu)造函數(shù)與類同名切沒有返回值。即便是void也不能寫 4. 注意:當(dāng)無指定構(gòu)造函數(shù)時(shí),編譯器為類自動添加形為: 類名( ) { } 的構(gòu)造方法 例如:Person類的構(gòu)造函數(shù) public class Person{ int id; TOM j
13、rry 1 25 堆內(nèi)存 1 27 XXXXX #### int age = 20; Person(int _id , int _age){ Id = _id Age = _age; } } Public static void main ( String[ ] agrs){ Person tom = new Person(1,25); Person jrry = new Person(1,27); } 內(nèi)存詳細(xì)過程詳解: 堆內(nèi)存 Tom:xxx _id:1 _age:25 調(diào)用構(gòu)造
14、函數(shù)(方法局部變量) new一個(gè)Person對象 調(diào)用完成后方法、局部變量消失 Id:1 age:25 十二、 約定俗成的命名規(guī)則 類名的首字母大寫 變量名和方法名的首字母小寫 運(yùn)用駝峰標(biāo)示 十三、 內(nèi)存分析過程 視頻: J2SE_5.0_第03章_面向?qū)ο?06_內(nèi)存解析_1.avi 07_內(nèi)存解析_2.avi 源碼: TestBirthdate\Test.java 31 class BirthDate { private int day; private int month; private int year;
15、 public BirthDate(int d, int m, int y) { day = d; month = m; year = y; } public void setDay(int d) { day = d; } public void setMonth(int m) { month = m; } public void setYear(int y) { year = y;
16、 } public int getDay() { return day; } public int getMonth() { return month; } public int getYear() { return year; } public void display() { System.out.println (day + " - " + month + " - " + year); }
17、} public class Test{ public static void main(String args[]){ Test test = new Test(); int date = 9; BirthDate d1= new BirthDate(7,7,1970); BirthDate d2= new BirthDate(1,1,2000); test.change1(date); test.change2(d1); test.chang
18、e3(d2); System.out.println("date=" + date); d1.display(); d2.display(); } public void change1(int i){ i = 1234; } public void change2(BirthDate b) { b = new BirthDate(22,2,2004); } public void change3(BirthDate b)
19、 { b.setDay(22); } } 調(diào)用過程演示(1) 棧內(nèi)存 d2 d1 main date test 堆內(nèi)存 Test test = new Test(); int date = 9; BirthDate d1= new BirthDate(7,7,1970); BirthDate d2= new BirthDate(1,1,2000); @ test.change1(date);
20、 test.change2(d1); test.change3(d2); ….. …… …… …… public void change1(int i) { i = 1234; } public void change2(BirthDate b) { b = new BirthDate(22,2,2004); } public void change3(BirthDate b) { b.setDay(22); } 7 7 1970 1 1 2000 110925 9 5
21、87934 354752 調(diào)用過程演示(2) 棧內(nèi)存 change1à i d2 d1 main date test 堆內(nèi)存 Test test = new Test(); int date = 9; BirthDate d1= new BirthDate(7,7,1970); BirthDate d2= new BirthDate(1,1,2000); test.change1(date); test.change2(d1)
22、; test.change3(d2); ….. …… …… …… public void change1(int i) { @ i = 1234; } public void change2(BirthDate b) { b = new BirthDate(22,2,2004); } public void change3(BirthDate b) { b.setDay(22); } 7 7 1970 1 1 2000 110925 9 587934 354752 9
23、 調(diào)用過程演示(3) 棧內(nèi)存 change1 à i d2 d1 main date test 堆內(nèi)存 Test test = new Test(); int date = 9; BirthDate d1= new BirthDate(7,7,1970); BirthDate d2= new BirthDate(1,1,2000); test.change1(date); test.change2(d1);
24、 test.change3(d2); ….. …… …… …… public void change1(int i) { i = 1234; @ } public void change2(BirthDate b) { b = new BirthDate(22,2,2004); } public void change3(BirthDate b) { b.setDay(22); } 7 7 1970 1 1 2000 110925 9 587934 354752 1234 調(diào)
25、用過程演示(4) 棧內(nèi)存 d2 d1 main date test 堆內(nèi)存 Test test = new Test(); int date = 9; BirthDate d1= new BirthDate(7,7,1970); BirthDate d2= new BirthDate(1,1,2000); test.change1(date); @ test.change2(d1); test.change3(d2
26、); ….. …… …… …… public void change1(int i) { i = 1234; } public void change2(BirthDate b) { b = new BirthDate(22,2,2004); } public void change3(BirthDate b) { b.setDay(22); } 7 7 1970 1 1 2000 110925 9 587934 354752 調(diào)用過程演示(5)
27、 棧內(nèi)存 -->b change2 d2 d1 main date test 堆內(nèi)存 Test test = new Test(); int date = 9; BirthDate d1= new BirthDate(7,7,1970); BirthDate d2= new BirthDate(1,1,2000); test.change1(date); test.change2(d1); test.change3(d2); …..
28、…… …… …… public void change1(int i) { i = 1234; } public void change2(BirthDate b) @ { b = new BirthDate(22,2,2004); } public void change3(BirthDate b) { b.setDay(22); } 7 7 1970 1 1 2000 110925 9 587934 354752 587934 調(diào)用過程演示(6)
29、 棧內(nèi)存 -->b change2 d2 d1 main date test 堆內(nèi)存 Test test = new Test(); int date = 9; BirthDate d1= new BirthDate(7,7,1970); BirthDate d2= new BirthDate(1,1,2000); test.change1(date); test.change2(d1); test.change3(d2); ….. ……
30、…… …… public void change1(int i) { i = 1234; } public void change2(BirthDate b) { b = new BirthDate(22,2,2004); } @ public void change3(BirthDate b) { b.setDay(22); } 7 7 1970 1 1 2000 110925 9 587934 354752 587976 22 2 2004 調(diào)用過程演示(7)
31、 棧內(nèi)存 d2 d1 main date test 堆內(nèi)存 Test test = new Test(); int date = 9; BirthDate d1= new BirthDate(7,7,1970); BirthDate d2= new BirthDate(1,1,2000); test.change1(date); test.change2(d1); @ test.change3(d2); ….. ……
32、…… …… public void change1(int i) { i = 1234; } public void change2(BirthDate b) { b = new BirthDate(22,2,2004); } public void change3(BirthDate b) { b.setDay(22); } 7 7 1970 1 1 2000 110925 9 587934 354752 調(diào)用過程演示(8) 棧內(nèi)存
33、 change3—>b d2 d1 main date test 堆內(nèi)存 Test test = new Test(); int date = 9; BirthDate d1= new BirthDate(7,7,1970); BirthDate d2= new BirthDate(1,1,2000); test.change1(date); test.change2(d1); test.change3(d2); ….. …… …… ……
34、public void change1(int i) { i = 1234; } public void change2(BirthDate b) { b = new BirthDate(22,2,2004); } public void change3(BirthDate b) @{ b.setDay(22); } 7 7 1970 1 1 2000 110925 9 587934 354752 354752 調(diào)用過程演示(9) 棧內(nèi)存 change
35、3—>b d2 d1 main date test 堆內(nèi)存 Test test = new Test(); int date = 9; BirthDate d1= new BirthDate(7,7,1970); BirthDate d2= new BirthDate(1,1,2000); test.change1(date); test.change2(d1); test.change3(d2); ….. …… …… …… public
36、void change1(int i) { i = 1234; } public void change2(BirthDate b) { b = new BirthDate(22,2,2004); } public void change3(BirthDate b) { b.setDay(22); } @ 7 7 1970 22 1 2000 110925 9 587934 354752 354752 調(diào)用過程演示(10) 棧內(nèi)存 d2
37、d1 main date test 堆內(nèi)存 Test test = new Test(); int date = 9; BirthDate d1= new BirthDate(7,7,1970); BirthDate d2= new BirthDate(1,1,2000); test.change1(date); test.change2(d1); test.change3(d2); @ ….. …… …… …… public void change1
38、(int i) { i = 1234; } public void change2(BirthDate b) { b = new BirthDate(22,2,2004); } public void change3(BirthDate b) { b.setDay(22); } 7 7 1970 22 1 2000 110925 9 587934 354752 08_內(nèi)存解析_3.avi test:xxx date:9 d1:xxxx 22 1 2000 7 7 19
39、70 D2:xxxx 練習(xí): 視頻: 09_練習(xí).avi 10_答案.avi 11_內(nèi)存解析.avi 源碼:TestPoint\TestPoint.java class Point { double x, y, z; Point(double _x, double _y, double _z) { x = _x; y = _y; z = _z; } void setX(double _x) { x = _x; } double getDistance(Point p) { return (x - p.x)*(
40、x - p.x) + (y - p.y)*(y - p.y) + (z - p.z)*(z - p.z); } } public class TestPoint { public static void main(String[] args) { Point p = new Point(1.0, 2.0, 3.0); Point p1 = new Point(0.0, 0.0, 0.0); System.out.println(p.getDistance(p1)); p.setX(5.0); System.out.println(p.getD
41、istance(new Point(1.0, 1.0, 1.0))); } } 內(nèi)存調(diào)用過程見視頻 stack p1:xxx p:xxx heap 5.0 2.0 3.0 0.0 2009-12-9 19:43:33 十四、 方法重載 OverLoad 2009-12-11 10:45:05 方法的重載指一個(gè)類中可以定義有相同的名字,但參數(shù)個(gè)數(shù)不同和參數(shù)類型不同的多個(gè)方法。調(diào)用時(shí)會根據(jù)不同的參數(shù)表選擇對應(yīng)方法 能被編譯器區(qū)分的方法既是構(gòu)成重載 構(gòu)造函數(shù)(方法)也可以重載 見二十三、繼承中的構(gòu)造方法 P20 方
42、法重載可以改變返回值的類型。(不知道為什么2009-12-12 21:24:11) 例子1 12_方法重載與內(nèi)存解析.avi TestOverLoad.java public class TestOverLoad { public static void main(String[] args) { Person p = new Person(); Person p1 = new Person(400); Person p2 = new Person(2, 500); p.info(); p.info("ok"); } } class Pers
43、on { //定義三個(gè)靈活的方法 Person() { id = 0; age = 20; } Person(int _id) { id = _id; age = 23; } Person(int _id, int _age) { id = _id; age = _age; } //成員變量定義 private int id; private int age = 20; //方法定義 public int getAge() {return age;} public void setA
44、ge(int i) {age = i;} public int getId() {return id;} void info() { System.out.println("my id is : " + id); } void info(String t) { System.out.println(t + " id " + id); } } 例子2 12_方法重載與內(nèi)存解析.avi TestOverload\test.java public class Test { void max(int a , int b) {
45、 System.out.println( a > b ? a : b ); } 參數(shù)類型不同,可以被 編譯器識別 void max(short a , short b) { System.out.println("short"); System.out.println( a > b ? a : b ); } void max(float a, float b) { System.out.println( a > b ? a : b ); 參數(shù)返回類型不同,構(gòu) }
46、成重名不能被編譯器 識別 int max(float a, float b) { System.out.println( a > b ? a : b ); } public static void main(String[] args) { Test t = new Test(); t.max(3, 4); short a = 3; short b = 4; t.max(a, b); } } 十五、 對象創(chuàng)建與使用_復(fù)習(xí)與練習(xí) 源碼:TestCi
47、rcle.java 視頻:14_TestCircle程序分析_1.avi 15_TestCircle程序分析_2.avi 16_TestCircle程序分析_3.avi class Point { private double x; private double y; Point(double x1, double y1) { x = x1; y = y1; } public double getX() { return x; } public double getY() { return y; }
48、 public void setX(double i) { x = i; } public void setY(double i) { y = i; } } // class Circle { private Point o; private double radius; Circle(Point p, double r) { o = p; radius = r; } Circle(double r) { o = new Point(0.0, 0.0); r
49、adius = r; } boolean contains(Point p) { double x = p.getX() - o.getX(); double y = p.getY() - o.getY(); if(x*x + y*y > radius * radius) return false; else return true; } public void setO(double x, double y) { o.setX(x);
50、 o.setY(y); } public Point getO() { return o; } public double getRadius() { return radius;} public void setRadius(double r) { radius = r;} public double area() { return 3.14 * radius * radius; } } public class TestCircle { public static void main(Str
51、ing args[]) { Circle c1 = new Circle(new Point(1.0,2.0), 2.0); Circle c2 = new Circle(5.0); System.out.println("c1:("+c1.getO().getX()+"," +c1.getO().getY()+"),"+c1.getRadius()); System.out.println("c2:("+c2.getO().getX() +","+c2.getO().g
52、etY()+"),"+c2.getRadius()); System.out.println("c1 area = "+c1.area()); System.out.println("c1 area = "+c2.area()); c1.setO(5,6); c2.setRadius(9.0); System.out.println("c1:("+c1.getO().getX()+"," +c1.getO().getY()+"),"+c1.getRadius());
53、 System.out.println("c2:("+c2.getO().getX()+"," +c2.getO().getY()+"),"+c2.getRadius()); System.out.println("c1 area = "+c1.area()); System.out.println("c1 area = "+c2.area()); Point p1 = new Point(5.2, 6.3); System.out.println(c1.contains(
54、p1)); System.out.println(c1.contains(new Point(10.0,9.0))); } } stack c1:xxxx c2:xxxx p1:xxx heap o 5.0 o 5.0 0.0 6.0 0.0 5.0 5.2 6.3 十六、 this關(guān)鍵字 定義:在類的方法定義中使用this關(guān)鍵字代表使用該方法的對象引用 使用 this (argument_list) 調(diào)用本類的另外的構(gòu)造方法 使用this.xxx = xxx 獲取本類另外一個(gè)構(gòu)造方法傳
55、來的值 構(gòu)造函數(shù)和一般成員函數(shù)在繼承中的區(qū)別的練習(xí) 使用:當(dāng)必須指出當(dāng)前使用方法的對象是誰時(shí)要使用this 有時(shí)使用this可以處理方法中成員變量和參數(shù)重名情況 this可以看做一變量,它的值是當(dāng)前對象引用 this void print( ) { System.out. println("i = "+i );} public static void main(String [] args){ Leaf leaf = new Leaf(100); leaf.increament().increament().print(); } } 十七、 St
56、atic關(guān)鍵字 1. 在類中,使用static聲明的成員變量為靜態(tài)成員變量,它為該類的公用變量,在第一次使用時(shí)被初始化,對該類的所有對象來說,static成員變量只有一份。 2. 用static聲明的方法為靜態(tài)方法,在調(diào)用該方法時(shí),不會將對象的引用傳遞給它,所以在static方法中不可訪問非static的成員。 - ----靜態(tài)方法不再是針對某個(gè)對象調(diào)用,所以不能訪問非靜態(tài)成員 3. 可以通過對象引用或者類名(不需實(shí)例化)訪問靜態(tài)成員。 如 類名.靜態(tài)成員變量 System.out out就是靜態(tài)的 4. 靜態(tài)變量可以用來計(jì)數(shù)。(main方法可以直接調(diào)用) 5. 我覺得就是在使
57、用內(nèi)部類時(shí)使用, 如果不需要內(nèi)部類隊(duì)形想與其外圍類之間有聯(lián)系,那么可以將內(nèi)部類聲明為 static,這通常叫 嵌套類. 嵌套類意味著: 1 要創(chuàng)建嵌套類的對象,并不需要其外圍類的對象. 2 不能從嵌套類的對象中訪問非靜態(tài)類的外圍類對象! 用Static聲明的 叫 屬性(特點(diǎn)) 用處 位置 訪問 變量(成員變量) 靜態(tài)成員變量 該類的公用變量,在第一次使用時(shí)被初始化,對該類的所有對象來說,static成員變量只有一份 計(jì)數(shù) 數(shù)據(jù)區(qū) (data seg) 類名.靜態(tài)成員變量 方法 靜態(tài)方法 在調(diào)用該方法時(shí),不會將對象
58、的引用傳遞給它,所以在static方法中不可訪問非static的成員。 6. 例子 源碼:Cat.java 視頻:18_static關(guān)鍵字_1.avi 19_static_關(guān)鍵字_2.avi public class Cat { private static int sid = 0; private String name; int id; Cat(String name) { this.name = name; id = sid++; } public void inf
59、o(){ System.out.println ("My name is "+name+" No."+id); } public static void main(String arg[]){ Cat.sid = 100; Cat mimi = new Cat("mimi"); mimi.sid = 2000; Cat pipi = new Cat("pipi"); mimi.info(); pipi.info(
60、); } } 十八、 package和import 2009-12-11 15:00:21 1. java引入包(package)機(jī)制提供類的多重類命名空間。 2. package語句作為java源文件第一句,指明該文件定義的類所在包。 package pkg1[.pkg2[.pkg3 ….]]; 約定俗成的命名:com.域名.xxx 3. java編譯器把語句對應(yīng)于文件系統(tǒng)的目錄管理,package語句中使用” . ”點(diǎn)值指明包(目錄)層次 如 .sxt; 指的是該文件中所有類位于.\com\sxt目錄下 4. Java引入import機(jī)制簡化包
61、的引入 總結(jié):1聲明包:package.pkg.xxx 而編譯好的文件xx.class必須位于正確目錄下 pkg\xx\... 2 使用包,在另一個(gè)類中使用包中的類,必須寫全名稱, 3 可以用import關(guān)鍵詞,在文件開頭引入要使用的類,如import com.bjsxt.java.* 4 可以不需要用import語句而直接使用java.lang包中的類 5 其它類訪問的飛方式: 寫全名 引入import(具體類名 * ) 注意:訪問位于同一個(gè)包中的類不需要引入 6 必須class文件的最上層包的父目錄位于classpath下 例子:1最
62、初始使用包的方法在classpath的testpackage目錄下 20_package和import語句_1 2 3 4.avi Dog.java public class Dog { public static void main(String[] args) { com.bjsxt.java140.Cat c = new com.bjsxt.java140.Cat();//寫全名 } } \com\bjsxt\java140\cat.java位于正確的目錄下 package com.bjsxt.java140;//聲明包 class Cat { }
63、 2簡化使用包的方法在classpath的testpackage目錄下 Dog.java import com.bjsxt.java140.*;//指定包的位置 public class Dog { public static void main(String[] args) { Cat c = new Cat();//不需要寫全名 } } \com\bjsxt\java140\cat.java位于正確的目錄下 package com.bjsxt.java140;//聲明包 class Cat { } J2SDK中主要包的介紹 Jdk目錄下j
64、re\lib\rt.jar 里面包含運(yùn)行時(shí)需要的所有class文件:就是一個(gè)classpath Java.lang java語言的核心類,如String、Math、integer、System和thread,提供常用功能 Java.awt 構(gòu)成抽象窗口工具集(abstract window toolkits)的多個(gè)類, Java.applet applet運(yùn)行所需的一些類 J 執(zhí)行與網(wǎng)絡(luò)相關(guān)的操作的類 Java.io 提供多種輸入/輸出功能的類 Java.util 一些使用工具類,如地挪移系統(tǒng)特性、使用與日期日歷相關(guān)的函數(shù) 打包語句: 在classpath的testp
65、ackage目錄下輸入: jar –cvf test.jar *.* F:\DesignProjects\Java\testpackage\mxw.jar 課作為環(huán)境變量路徑,jar包里的東西都可使用, 十九、 訪問控制 Java權(quán)限修飾符public protected private置于類的成員定義前用來限定其他對象對該類對象成員的訪問權(quán)限 修飾符 類內(nèi)部 同一個(gè)包 子類 任何地方 private √ default √ √ protected √ √ √ public √ √ √ √ 對于class的權(quán)限修飾值可以用
66、public和default public類可以在任意地方被訪問 default類只可以被同一個(gè)包內(nèi)部的類訪問 private私有類 子類擁有私有變量的所有權(quán),無使用權(quán)(只能看 不能動) 例子: 25_繼承和權(quán)限控制_2.Avi 25_繼承和權(quán)限控制_2.Avi TestAccess.java TestProtected.java public class TestAccess { } class T { private int i = 0; int j = 0; protected int k = 0; public int m = 0; public void m() { i = 9; } } class TT { public void m( ) { T t = new T(); System.out.println( t.i );//不能訪問 System.out.println( t.j );//能訪問 } }
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 110中國人民警察節(jié)(筑牢忠誠警魂感受別樣警彩)
- 2025正字當(dāng)頭廉字入心爭當(dāng)公安隊(duì)伍鐵軍
- XX國企干部警示教育片觀后感筑牢信仰之基堅(jiān)守廉潔底線
- 2025做擔(dān)當(dāng)時(shí)代大任的中國青年P(guān)PT青年思想教育微黨課
- 2025新年工作部署會圍繞六個(gè)干字提要求
- XX地區(qū)中小學(xué)期末考試經(jīng)驗(yàn)總結(jié)(認(rèn)真復(fù)習(xí)輕松應(yīng)考)
- 支部書記上黨課筑牢清廉信念為高質(zhì)量發(fā)展?fàn)I造風(fēng)清氣正的環(huán)境
- 冬季消防安全知識培訓(xùn)冬季用電防火安全
- 2025加強(qiáng)政治引領(lǐng)(政治引領(lǐng)是現(xiàn)代政黨的重要功能)
- 主播直播培訓(xùn)直播技巧與方法
- 2025六廉六進(jìn)持續(xù)涵養(yǎng)良好政治生態(tài)
- 員工職業(yè)生涯規(guī)劃方案制定個(gè)人職業(yè)生涯規(guī)劃
- 2024年XX地區(qū)黨建引領(lǐng)鄉(xiāng)村振興工作總結(jié)
- XX中小學(xué)期末考試經(jīng)驗(yàn)總結(jié)(認(rèn)真復(fù)習(xí)輕松應(yīng)考)
- 幼兒園期末家長會長長的路慢慢地走