




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、java程序設計教學教案課件java程序設計教學教案課件4.2 對象類是創建對象的模板創建對象:對象的聲明為對象分配內存java程序設計教學教案課件4.2 對象1、對象的聲明:格式:類的名字 對象名字;如:People zhangPing;java程序設計教學教案課件4.2 對象2、為聲明的對象分配內存:使用new運算符和類的構造方法為聲明的對象分配內存,如果類中沒有構造方法,系統會調用默認的構造方法(默認的構造方法是無參數的)。如:zhangPing=new People();java程序設計教學教案課件4.2 對象class XiyoujiRenwufloat height,weight;
2、String head,ear,hand,foot,mouth;void speak(String s)System.out.println(s);class Apublic static void main(String args )XiyoujiRenwu zhubajie; /聲明對象zhubajie=new XiyoujiRenwu(); /為對象分配內存,使用new運算符和默認的構造方法例:例:1java程序設計教學教案課件4.2 對象class Point int x,y; Point(int a,int b) x=a; y=b; public class A public sta
3、tic void main(String args) Point p1,p2; /聲明對象p1和p2。 p1=new Point(10,10); /為對象分配內存,使用 new 和類中的構造方法。 p2=new Point(23,35); /為對象分配內存,使用 new 和類中的構造方法。 例:例:2java程序設計教學教案課件練習 用課本P45 類梯形創建一個名為“tx”的對象java程序設計教學教案課件4.2 對象3、對象的內存模型:聲明對象時的內存模型聲明對象變量后,變量內存無數據,是空對象,不能使用如:XiyoujiRenwu zhubajie;zhubajiejava程序設計教學教案
4、課件4.2 對象3、對象的內存模型:對象分配內存后的內存模型為成員變量分配內存返回一個應用給對象變量如 zhubajie=new XiyoujiRenwu();0.00.0nullnullnullnullnull0 xAB12zhubajieweightheightheadearmouthhandfootjava程序設計教學教案課件4.2.2 使用對象使用運算符 “.” ,對象實現對自己的變量訪問和方法的調用對象操作自己的變量(對象的屬性)對象創建后,就有自己的變量。通過使用運算符“.”對象實現對自己變量的訪問。對象調用類中的方法(對象的功能)采用“.”調用創建它的類中的方法。當對象調用類中的
5、一個方法時,方法中的局部變量被分配到內存空間java程序設計教學教案課件4.2.2 使用對象class XiyoujiRenwu float height,weight; String head, ear,hand,foot,mouth; void speak(String s) head=歪著頭; System.out.println(s); public class Example public static void main(String args) XiyoujiRenwu zhubajie,sunwukong;/聲明對象。 zhubajie=new XiyoujiRenwu();/
6、為對象分配內存,使用new 運算符和默認構造方法。 sunwukong=new XiyoujiRenwu(); zhubajie.height=1.80f; /對象給自己的變量賦值。 java程序設計教學教案課件 zhubajie.weight=160f; zhubajie.hand=兩只黑手; zhubajie.foot=兩只大腳; zhubajie.head=大頭; zhubajie.ear=一雙大耳朵; zhubajie.mouth=一只大嘴; sunwukong.height=1.62f; /對象給自己的變量賦值。 sunwukong.weight=1000f; sunwukong.h
7、and=白嫩小手; sunwukong.foot=兩只繡腳; sunwukong.head=繡發飄飄; sunwukong.ear=一對小耳; sunwukong.mouth=櫻桃小嘴; System.out.println(zhubajie的身高:+zhubajie.height); System.out.println(zhubajie的頭:+zhubajie.head); System.out.println(sunwukong的重量:+sunwukong.weight); System.out.println(sunwukong的頭:+sunwukong.head); zhubajie
8、.speak(俺老豬我想娶媳婦); /對象調用方法。 System.out.println(zhubajie現在的頭:+zhubajie.head); sunwukong.speak(老孫我重1000斤,我想騙八戒背我); /對象調用方法。 System.out.println(sunwukong現在的頭:+sunwukong.head); java程序設計教學教案課件4.2.2 使用對象類中的方法可以操作成員變量,當對象調用該方法時,方法中出現的成員變量就是指該對象的成員變量。java程序設計教學教案課件練習 打印梯形的面積:(上底為2.0,下底為5.0,高為3.0) 用課本P45 梯形類j
9、ava程序設計教學教案課件4.2.3 對象的應用和實體當用類創建一個對象時,類中的成員變量被分配內存空間,這些內存空間被稱作該對象的實體。對象中存放著應用,確保實體由該對象操作使用。java程序設計教學教案課件4.2.3 對象的應用和實體如:Point p1=new Point(12,16);Point p2=new Point(6,18);p1=p2;12166180 xAB280 xDD618XyXyXy0 xDD0 xDDp1p2p2p1java程序設計教學教案課件4.2.3 對象的應用和實體例4:class 圓 double 半徑; 圓(double r) 半徑=r; double 計
10、算面積() return 3.14*半徑*半徑; void 修改半徑(double 新半徑) 半徑=新半徑; double 獲取半徑() return 半徑; java程序設計教學教案課件4.2.3 對象的應用和實體class 圓錐 圓 底圓; double 高; 圓錐(圓 circle,double h) this.底圓=circle; this.高=h; double 計算體積() double volume; volume=底圓.計算面積()*高/3.0; return volume; void 修改底圓半徑(double r) 底圓.修改半徑(r); double 獲取底圓半徑() r
11、eturn 底圓.獲取半徑(); java程序設計教學教案課件4.2.3 對象的應用和實體class Example public static void main(String args) 圓 circle=new 圓(10); 圓錐 circular=new 圓錐(circle,20); System.out.println(圓錐底圓半徑:+circular.獲取底圓半徑(); System.out.println(圓錐的體積:+circular.計算體積(); circular.修改底圓半徑(100); System.out.println(圓錐底圓半徑:+circular.獲取底圓半徑
12、(); System.out.println(圓錐的體積:+circular.計算體積(); java程序設計教學教案課件4.3 static關鍵字1、實例變量和類變量的區別不同對象的實例變量將被分配不同的內存空間,如果類中的成員變量有類變量,那么所有對象的這個類變量都分配給相同的一處內存,改變其中一個對象的這個類變量會影響其它對象的這個類變量。也就是說對象共享類變量java程序設計教學教案課件4.3 static關鍵字例子5class 梯形 float 上底,高; static float 下底; /類變量。 梯形(float 上底,float 高) this.上底=上底; this.高=高
13、; float 獲取上底() return 上底; float 獲取下底() return 下底; java程序設計教學教案課件4.3 static關鍵字class Example4_5 public static void main(String args) 梯形 laderOne,laderTwo; /梯形的字節碼被加載到內存。 梯形.下底=60; /通過類名操作類變量。 laderOne=new 梯形(18.0f,20); laderTwo=new 梯形(9.0f,10); System.out.println(laderOne的上底:+laderOne.獲取上底(); System.o
14、ut.println(laderOne的下底:+laderOne.獲取下底(); System.out.println(laderTwo的上底:+laderTwo.獲取上底(); System.out.println(laderTwo的下底:+laderTwo.獲取下底(); java程序設計教學教案課件4.3 static關鍵字2、實例方法和類方法的區別當類的字節碼文件被加載到內存時,類的實例方法不會被分配入口地址,當該類創建對象后,類中的實例方法才分配入口地址,從而實例方法可以被類創建的任何對象調用執行。類中的類方法,在該類被加載到內存時,就分配了相應的入口地址。java程序設計教學教案課
15、件4.4 this關鍵字1、this關鍵字可以出現在類的實例方法中,代表使用該方法的當前對象。2、this關鍵字出現在類的構造方法中,代表使用該構造方法所創建的對象。實例方法可以操作類的成員變量。格式:this.成員變量 java程序設計教學教案課件4.4 this關鍵字如:class Aint x;void f()this.x=100;/此例子沒有同名的成員變量和局部變量,this可以省略java程序設計教學教案課件4.4 this關鍵字如:class Bvoid f()this.g();void g()System.out.println(“OK”);/此例子中this代表使用方法f的當前
16、對象,方法發f的方法體中this.g()就是當前對象調用方法g.一個方法調用另一個方法時可以省略方法名字前面的thisjava程序設計教學教案課件4.5 包1、包語句通過關鍵字package聲明包語句。package作為Java源文件的第一條語句。package語句的一般格式:package 包名;如:package sunrise;package ;java程序設計教學教案課件4.5 包如果源程序中省略了package語句,源文件所定義命名的類被隱含地認為是無名包的一部分即源文件中定義命名的類在同一個包中,但該包沒有名字。java程序設計教學教案課件4.5 包程序如果使用了包語句,就必須有相
17、應的目錄結構。如:package tom.jafei;則目錄結構必須包含如下結構:tomjiafeijava程序設計教學教案課件4.5 包例6:package tom.jiafei;public class Example4_6 public static void main(String args) System.out.println(我有包名); java程序設計教學教案課件4.5 包2、 import語句使用import語句可以引入包中的類。在一個java源程序中可以有多個import語句,他們必須寫在package語句和源文件中的類的定義之間java程序設計教學教案課件4.5 包2、
18、 import語句Java提供的包有很多,約130多個如:java. applet 包含所有實現java applet的類 java.awt 包含抽象窗口工具集中的圖形、文本、窗口GUI類java.awt.image 包含抽象窗口工具集中的圖像處理類java.lang 包含所有基本語言類java.io 包含所有的輸入/輸出類 包含所有實現網絡功能的類java.until包含有用的數據類型類java程序設計教學教案課件4.5 包引入類:如果要引入一個包中的全部類,則可以用星號來代替如:import java.awt.*;只引入一個確定的類,則直接寫明引用如:import java.until.D
19、atejava程序設計教學教案課件4.5 包例7:import java.applet.Applet;import java.awt.*;public class Example extends Applet Button redbutton; public void init() redbutton=new Button(我是一個紅色的按鈕我是一個紅色的按鈕); redbutton.setBackground(Color.red); add(redbutton); public void paint(Graphics g) g.drawString(it is a button,30,50)
20、; java程序設計教學教案課件 例8import tom.jiafei.*;class Example4_8 public static void main(String args) Trangle trangle=new Trangle(12,3,1); trangle.計算面積計算面積(); trangle.修改三邊修改三邊(3,4,5); trangle.計算面積計算面積(); java程序設計教學教案課件4.6 訪問權限1.私有變量和私有方法2.共有變量和共有方法3.友好變量和友好方法4.受保護成員變量和方法5.public類與友好類java程序設計教學教案課件4.6 訪問權限1.私
21、有變量和私有方法用關鍵字private修飾的成員變量和方法被稱為私有變量和私有方法如:class Tomprivate float weight; /weight私有的私有的float變量變量private float f(float a, float b) /方法方法f是私有方法是私有方法java程序設計教學教案課件4.6 訪問權限對于私有成員變量或方法,在另外一個類中,不能操作這個私有變量或方法,只有在本類中創建該類的對象的時候,才能訪問自己的私有變量和類中的私有方法。class Jerryvoid g() Tom cat=new Tom();cat.weight=23f; /非法非法ca
22、t.f(3f,4f);/非法非法java程序設計教學教案課件4.6 訪問權限class Example4_9 private int money; Example4_9() money=2000; private int getMoney() return money; public static void main(String args) Example4_9 exa=new Example4_9(); exa.money=3000; int m=exa.getMoney(); System.out.println(money=+m); 類中訪問自己的私有成員變量和私有方法java程序設計
23、教學教案課件4.6 訪問權限2.共有變量和共有方法用關鍵字public修飾的成員變量和方法被稱為共有變量和共有方法如:class Tompublic float weight; /weight共有的共有的float變量變量public float f(float a, float b) /方法方法f是共有方法是共有方法java程序設計教學教案課件4.6 訪問權限對于共有成員變量或方法,在另外一個類中,能操作這個變量或方法。class Jerryvoid g() Tom cat=new Tom();cat.weight=23f; /合法合法cat.f(3f,4f);/合法合法java程序設計教學
24、教案課件4.6 訪問權限3.友好變量和方法不用private、public、protected修飾的成員變量和方法被稱為友好變量和友好方法。如:class Tomfloat weight; /weight友好的友好的float變量變量float f(float a, float b) /方法方法f是友好方法是友好方法java程序設計教學教案課件4.6 訪問權限在同一個包中,那么能訪問自己的友好變量和友好方法。class Jerryvoid g() Tom cat=new Tom();cat.weight=23f; /合法合法cat.f(3f,4f);/合法合法java程序設計教學教案課件4.6
25、 訪問權限4.受保護的成員變量和方法用關鍵字protected修飾的成員變量和方法被稱為受保護的成員變量和受保護的方法如:class Tomprotected float weight; /weight受保護的受保護的float變量變量protected float f(float a, float b) /方法方法f是受保護的方法是受保護的方法java程序設計教學教案課件4.6 訪問權限當在另外一個類中用類Tom創建一個對象后,如果這個類與類Tom在同一個包中,那么該對象能訪問自己的protected變量和方法.也可以通過類名訪問class Jerryvoid g() Tom cat=new
26、 Tom();cat.weight=23f; /合法合法cat.f(3f,4f);/合法合法java程序設計教學教案課件4.6 訪問權限5.public類與友好類 類聲明時,如果在關鍵字class前面加上public關鍵字,就稱這樣類是一個public類如: public class A如果一個類不加public修飾,則為友好類如:class Ajava程序設計教學教案課件4.6 訪問權限5.public類與友好類 不能用protected和private修飾類訪問權限的排列:public 、protected、友好的、privatejava程序設計教學教案課件4.7 類的繼承繼承是一種用已有
27、類創建新類的機制。新類繼承一般類的狀態和行為,并根據需要增加它自己的新的狀態和行為。由繼承而得到的類成為子類,被繼承的類稱為父類(超類)。Java不支持多重繼承(子類只能有一個父類)java程序設計教學教案課件4.7 類的繼承1.創建子類在聲明中,使用關鍵字extends來創建一個類的子類,格式:class 子類名 extends 父類名java程序設計教學教案課件4.7 類的繼承1.創建子類例:把Student聲明為People的子類,People是Students的父類.class Student extends Peoplejava程序設計教學教案課件4.7 類的繼承2.子類的繼承性子類
28、繼承父類的成員變量繼承父類的方法.java程序設計教學教案課件4.7 類的繼承2.子類的繼承性子類和父類在同一包種的繼承性如果子類和父類在同一個包中,那么子類自然地繼承了其父類中不是private的成員變量作為自己的成員變量,并且也自然地繼承了父類中不是private的方法作為自己的方法.繼承的成員或方法的訪問權限保持不變.java程序設計教學教案課件class Father private int money; int weight=100; String speak(String s) return s ; class Son extends Father String hand ; vo
29、id f() weight=200; System.out.println(weight); class Suizi extends Son String foot ;java程序設計教學教案課件public class Example4_10 public static void main(String args) Son son=new Son(); Suizi sunzi=new Suizi(); son.hand=兩只手 ; sunzi.hand=兩小只手 ; sunzi.foot=兩只腳 ; System.out.println(son.hand); son.f(); System.
30、out.println(sunzi.weight+:+sunzi.hand+:+sunzi.foot); System.out.println(sunzi.speak(我是孫子); java程序設計教學教案課件4.7 類的繼承2.子類的繼承性子類和父類不在同一包種的繼承性如果子類和父類不在同一個包中,那么子類繼承了父類的protected、public成員變量作為子類的成員變量,并且繼承了父類的protected、public方法為子類的方法。繼承的成員或方法的訪問權限保持不變.如果子類和父類不在同一個包里,子類不能繼承父類的友好變量和友好方法。java程序設計教學教案課件Father.jav
31、a:package tom.jiafei;public class Father int height; protected int money=120; public int weight; protected int getMoney() return money; void setMoney(int newMoney) money=newMoney; java程序設計教學教案課件Jerry.java package ;import tom.jiafei.Father;public class Jerry extends Father /Jerry和Father在不同的包中. void f
32、() money=1000; /合法, /height=1.89f; /非法,因為Jerry沒有繼承友好的height System.out.println(money); /輸出結果是1000。 /setMoney(300); /非法,因為Jerry沒有繼承友好的方法setMoney。 int number=getMoney(); /合法. System.out.println(number); /輸出結果是1000。 public static void main(String args) Jerry jerry=new Jerry(); jerry.f(); java程序設計教學教案課件
33、4.7 類的繼承2.子類的繼承性protected的進一步說明一個類A中的protected成員變量和方法可以被它的直接子類和間接子類繼承,如:B是A的子類,C是B的子類,D又是C的子類,那么B、C和D類都繼承了A的protected成員變量和方法。如果用D類在D本身中創建了一個對象,那么該對象總是可以通過“.”運算符訪問繼承的或自己定義的protected變量和protected方法。如果在另外一個類中,比如Other類,用D類創建了一個對象object,該對象通過“.”運算符訪問protected變量和protected方法的權限如下:java程序設計教學教案課件4.7 類的繼承如果在另外
34、一個類中,比如Other類,用D類創建了一個對象object,該對象通過“.”運算符訪問protected變量和protected方法的權限如下:子類D中親自聲明的protected成員變量和方法,不可能是從別的類繼承來的,object訪問這些非繼承的protected成員變量和方法時,只要Other類和D類在同一個包中就可以如果子類D的對象的protected成員變量或protected方法是從父類繼承的,那么就要一直追溯到該protected成員變量或方法的“祖先”類,即A類。如果Other類和A類在同一個包,object對象能訪問繼承的protected變量和protected方法。ja
35、va程序設計教學教案課件A.java:package tom.jiafei;public class A protected int x=120; protected void fA() System.out.println(我是A類中的protected方法); System.out.println(x=+x); java程序設計教學教案課件B.java:package ;import tom.jiafei.A;public class B extends A protected void fB() System.out.println(我是B類中自己定義的方法); public stati
36、c void main(String args) B b=new B(); /對象b在B類中. b.x=1000; /合法. b.fA(); /合法. b.fB(); /合法. java程序設計教學教案課件DL.java package ;import .B;public class DL public static void main(String args) B b=new B(); /對象b在DL類中. b.x=1000; /非法,因為對象b的成員變量x是從A類繼承的,但DL和A不在同一包中. b.fA(); /非法.因為方法fA是B類從A類繼承的protected方法,但DL和A不在同
37、一包中. b.fB(); /合法,因為方法fB是B類中自己定義的protected方法, DL類和B類在同一包中. java程序設計教學教案課件Example.javapackage tom.jiafei;import .B;public class Example public static void main(String args) B b=new B(); /對象b在Example類中. b.x=1000; /合法,因為對象b的成員變量x是從A類繼承的,而Example和A在 同一包中. b.fA(); /合法.因為方法fA是B類從A類繼承的protected方法,而Example和A在同一包中. b.fB(
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 公司祭掃烈士墓活動方案
- 2025年中學教師資格考試試卷及答案
- 2025年衛生檢驗與檢疫專業知識考試試題及答案
- 2025年項目管理專業資格考試試題及答案
- 2025年認證會計師考試試卷及答案
- 2025年生態系統管理與保護專業考試題及答案
- 2025年人力資源管理與實務課程考試卷及答案
- 2025年社區心理服務與危機干預專業知識測試試題及答案
- 2025年工程管理與項目管理考試試題及答案
- 2025年工業機器人與自動化技術考試題及答案
- 3停止間轉法教案
- 2022-2023學年重慶市合川市三下數學期末學業質量監測模擬試題含解析
- 文創園物業管理方案
- 全過程造價咨詢服務實施方案
- 初二生地會考復習資料全
- 里氏硬度法檢測鋼材強度范圍記錄表、鋼材里氏硬度與抗拉強度范圍換算表
- 《屹立在世界的東方》示范課教學課件【人教部編版小學道德與法治五年級下冊】
- 四川省宜賓市翠屏區中學2022-2023學年數學八年級第二學期期末檢測試題含解析
- 2020-2021成都石室聯合中學蜀華分校小學數學小升初模擬試卷附答案
- 某冶金機械廠供配電系統設計
- 《在中亞細亞草原上》賞析 課件
評論
0/150
提交評論