馬士兵 J2SE第三章 面向?qū)ο缶幊?個人學(xué)習(xí)筆記
《馬士兵 J2SE第三章 面向?qū)ο缶幊?個人學(xué)習(xí)筆記》由會員分享,可在線閱讀,更多相關(guān)《馬士兵 J2SE第三章 面向?qū)ο缶幊?個人學(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、物的具體的某一個東西(符合這類事物的具體特征的某個東西)叫對象} 2. 類是同種對象的集合與抽象,類中定義了這一類對象所應(yīng)具有的靜態(tài)和動態(tài)屬性。 關(guān)系:類可以看成一類對象的模板,對象可以看成該類的一個具體實(shí)例,瓶子是一個類,某個瓶子就是對象 實(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)一類型的對象的“模板”,在一個類中定義了該類對象所應(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ù)類型(包括基本類型和引用類型),作用范圍為整個類體 注意: 局部變量必須賦初試值才可以使用, 成員變量不用初始化,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)部 大 整個類體 自動初始化(被final修飾且沒有static的必須顯式賦值) 能被控制修飾符及static修飾 可以定義為final型 堆 1實(shí)例變量 2類變量(static靜態(tài)變量) 七、 引用類型(C中的指針,占兩塊內(nèi)存) 除了java語言
8、中基本類型以外的變量類型 Java中的對象是通過引用對其操作的 內(nèi)存值 /* 聲明string類型的引用變量,但是沒使它指向一個對象*/ String s null /* 使用new語句創(chuàng)建一個String類型的對象并 用S指向它,以后可以通過S完成對其的操作*/ 0X3a123b 堆內(nèi)存 …… …… S = new String (“hello world!”); 0X3a123b
9、 如何在內(nèi)存中區(qū)分類和對象? 類是靜態(tài)的概念,代碼區(qū) 獨(dú)享是new出來的,位于堆內(nèi)存,類的每個成員變量在不同的對象中都有不同的值(除了靜態(tài)變量) 而方法只有一份,執(zhí)行的時候才占用內(nèi)存 八、 對象的創(chuàng)建和使用 1. 必須使用new關(guān)鍵字創(chuàng)建對象 2. 使用:對象(引用) .隊(duì)員變量 來引用對象的成員變量 3. 使用:對象(引用).方法(參數(shù)列表)來調(diào)用對象的方法 4. 同一對象的每個對象有不同的成員變變量存儲空間 5. 同一類的每個對象共享該類的方法 九、 Java的方法定義 Java的方法類似于其他語言的函數(shù),是一段用來完成特定功能的代碼片段,聲明格式為: [修飾
10、符1 修飾符2 …..] 返回值類型 方法名( 形式參數(shù)列表 ){ Java 語句;… … … } 語法解釋: 1. 形式參數(shù):在方法被調(diào)用時用于接收外界輸入的數(shù)據(jù)。 2. 實(shí)參:調(diào)用方法時實(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ù)據(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類中的一個用來初始化對象的函數(shù) 1. 構(gòu)造函數(shù)名字與類的名字相同,大小寫也保持一致 2. 使用new+構(gòu)造方法創(chuàng)建一個新的對象 3. 構(gòu)造函數(shù)與類同名切沒有返回值。即便是void也不能寫 4. 注意:當(dāng)無指定構(gòu)造函數(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一個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 方法的重載指一個類中可以定義有相同的名字,但參數(shù)個數(shù)不同和參數(shù)類型不同的多個方法。調(diào)用時會根據(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 { //定義三個靈活的方法 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òu)造方法傳
55、來的值 構(gòu)造函數(shù)和一般成員函數(shù)在繼承中的區(qū)別的練習(xí) 使用:當(dāng)必須指出當(dāng)前使用方法的對象是誰時要使用this 有時使用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)成員變量,它為該類的公用變量,在第一次使用時被初始化,對該類的所有對象來說,static成員變量只有一份。 2. 用static聲明的方法為靜態(tài)方法,在調(diào)用該方法時,不會將對象的引用傳遞給它,所以在static方法中不可訪問非static的成員。 - ----靜態(tài)方法不再是針對某個對象調(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)部類時使用, 如果不需要內(nèi)部類隊(duì)形想與其外圍類之間有聯(lián)系,那么可以將內(nèi)部類聲明為 static,這通常叫 嵌套類. 嵌套類意味著: 1 要創(chuàng)建嵌套類的對象,并不需要其外圍類的對象. 2 不能從嵌套類的對象中訪問非靜態(tài)類的外圍類對象! 用Static聲明的 叫 屬性(特點(diǎn)) 用處 位置 訪問 變量(成員變量) 靜態(tài)成員變量 該類的公用變量,在第一次使用時被初始化,對該類的所有對象來說,static成員變量只有一份 計(jì)數(shù) 數(shù)據(jù)區(qū) (data seg) 類名.靜態(tài)成員變量 方法 靜態(tài)方法 在調(diào)用該方法時,不會將對象
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 使用包,在另一個類中使用包中的類,必須寫全名稱, 3 可以用import關(guān)鍵詞,在文件開頭引入要使用的類,如import com.bjsxt.java.* 4 可以不需要用import語句而直接使用java.lang包中的類 5 其它類訪問的飛方式: 寫全名 引入import(具體類名 * ) 注意:訪問位于同一個包中的類不需要引入 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)行時需要的所有class文件:就是一個classpath Java.lang java語言的核心類,如String、Math、integer、System和thread,提供常用功能 Java.awt 構(gòu)成抽象窗口工具集(abstract window toolkits)的多個類, 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)部 同一個包 子類 任何地方 private √ default √ √ protected √ √ √ public √ √ √ √ 對于class的權(quán)限修飾值可以用
66、public和default public類可以在任意地方被訪問 default類只可以被同一個包內(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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 人教部編版教材三年級上冊道德與法治第四單元家是最溫暖的地方教學(xué)ppt課件 (全套)
- 蘇教版小學(xué)科學(xué)三年級下冊《雨下得有多大》課件1
- 花的形態(tài)與結(jié)構(gòu)課件匯總
- 一年級-數(shù)學(xué)下冊十幾減九人教版課件
- 電影膠片動態(tài)課件
- 高電壓技術(shù)課件第六章
- 項(xiàng)目采購管理(6)
- 四川省攀枝花市XX小學(xué)一年級數(shù)學(xué)下冊六100以內(nèi)的加法和減法二練習(xí)十三2課件蘇教版
- 山東省青島市黃島區(qū)海青鎮(zhèn)中心中學(xué)七年級歷史下冊 15 明朝君權(quán)的加強(qiáng)課件 新人教版
- 把握人物的性格特征
- 剪小紙人PPT課件
- 八年級物理探究凸透鏡成像規(guī)律8
- 1[1]22配方法2
- 近代機(jī)械行業(yè)唯物主義管理分析自然觀
- 全國科技創(chuàng)新大賽“科學(xué)幻想畫”獲獎作品ppt課件