呼叫相同类别底下的另一个建构元课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《呼叫相同类别底下的另一个建构元课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 呼叫 相同 类别 底下 另一个 建构 课件
- 资源描述:
-
1、National Taiwan UniversityDepartment of Computer Science and Information EngineeringManaging InheritanceLecturer:曾學文National Taiwan UniversityDepartment of Computer Science and Information EngineeringOutlinethis存取控制(Access Control)static 關鍵字實體成員與類別成員static 初值設定區塊Your Turn物件導向語言三大特性封裝(Encapsulation)繼
2、承(Inheritance)同名異型(Polymorphism)OverridingOverloadingsuper 關鍵字Java 物件祖先:Object 類別Final Classes and MethodsYour TurnNational Taiwan UniversityDepartment of Computer Science and Information Engineeringthis 關鍵字this 關鍵字:用來存取目前的物件通常在 instance method 或建構元(constructor)內使用 this,可以呼叫目前物件的任何成員。原因:成員變數被 method
3、 或是建構元內的同名參數給遮蔽了常使用在 constructor 裡,當參數與成員變數名稱相同時在 method 裡使用 this 的目的,是為了要避免成員變數與參數之間的混用(ambiguity),尤其當參數名稱與成員變數名稱相同時this 也可用來呼叫此物件的 methodsthis 也可以用來呼叫此物件的 constructorNational Taiwan UniversityDepartment of Computer Science and Information Engineeringthis 關鍵字可以透過 this,呼叫相同類別底下的另一個建構元呼叫相同類別底下的另一個建構元
4、public class AClass private int x,y;private int width,height;public AClass()this(0,0,0,0);public AClass(int width,int height)this(0,0,width,height);public AClass(int x,int y,int width,int height)this.x=x;this.y=y;this.width=width;this.height=height;.National Taiwan UniversityDepartment of Computer S
5、cience and Information Engineeringthis 關鍵字具有二個建構元的 Box 類別class Box double width,height,depth;/預設的建構元Box()this(1,2,3);/可以自行指定長寬的建構元Box(int width,int height,int depth)this.width=width;this.height=height;this.depth=depth;National Taiwan UniversityDepartment of Computer Science and Information Engineeri
6、ngthis 關鍵字Example:BoxDemo.javaclass BoxDemo public static void main(String args)/宣告、配置與初始化Box物件Box myBox1=new Box();Box myBox2=new Box(10,20,30);double vol1,vol2;/顯示第一個盒子的體積myBox1.showVolume();/獲得第二個盒子的體積myBox2.showVolume();National Taiwan UniversityDepartment of Computer Science and Information Eng
7、ineeringYour Turn建立一個 Rectangle 類別此類別必須完成下列要求建構元 初始化預設長、寬各為 8、4 可自行設定矩形之長與寬 可以複製相同物件的建構元(傳進去的參數為要copy的物件)顯示目前的長、寬之值取得目前矩形之面積畫矩形,由*構成邊長sdfsadsadsa在 RectangleDemo 類別下,寫個 main()來測試所有功能National Taiwan UniversityDepartment of Computer Science and Information EngineeringYour TurnHintclass Rectangle final
8、int DEFAULT_LENGTH=8;final int DEFAULT_WIDTH=4;private int length;private int width;Rectangle()Rectangle(int length,int width)Rectangle(Rectangle obj)void showLW()double getArea()void drawRect()public static void main(String args)National Taiwan UniversityDepartment of Computer Science and Informati
9、on Engineering存取控制(Access Control)控制存取的關鍵字public、protected、private置於類別或成員宣告之前若沒有指定任何存取權限,表示此類別或成員僅供相同類別庫的其他類別使用,稱為 package access 層級將類別或成員設定為 package access 層級的好處是可使同在一個類別庫下的每個類別互相使用成員National Taiwan UniversityDepartment of Computer Science and Information Engineering存取控制(Access Control)public任何類別皆可
10、存取defaultpacketage accessprotected允許宣告的類別、子類別與同一個套件中的類別使用private只有在類別內部可以存取對於成員變數,通常設定為 private 權限,再透過 methods,如 get/set 來存取資料National Taiwan UniversityDepartment of Computer Science and Information Engineering存取控制(Access Control)Class Access類別不可設定為 private 或 protected若為了避免他人任意使用 constructors 建立物件 可
11、將 constructors 設定為 private 另外提供 static 的 methods 建立物件、複製物件main()必須由程式外部的程式碼來呼叫(Java 執行時期系統),所以 main()必須為 public設計存取秘訣:設定適合但最嚴苛的存取等級。因此,盡量使用 private。如此在修改成員變數內容時,只能透過 method。除非,在評估設為 public後會對於程式效能有顯著提升的情況。National Taiwan UniversityDepartment of Computer Science and Information Engineering存取控制(Access
12、 Control)Example:Alpha.javaprivate int iamprivate=1;int iampackage=2;/package accessprotected int iamprotected=3;public int iampublic=4;private void privateMethod()System.out.println(iamprivate Method);void packageMethod()/default:package access System.out.println(iampackage Method);protected void p
13、rotectedMethod()System.out.println(iamprotected Method);public void publicMethod()System.out.println(iampublic Method);National Taiwan UniversityDepartment of Computer Science and Information Engineering存取控制(Access Control)Example:DeltaOne.javapackage One;public class DeltaOne public static void mai
14、n(String args)Alpha a=new Alpha();/a.privateMethod();/illegal a.packageMethod();/legal a.protectedMethod();/legal a.publicMethod();/legal /System.out.println(iamprivate:“+a.iamprivate);/illegal System.out.println(iampackage:“+a.iampackage);/legal System.out.println(iamprotected:“+a.iamprotected);/le
15、gal System.out.println(iampublic:“+a.iampublic);/legal National Taiwan UniversityDepartment of Computer Science and Information Engineering存取控制(Access Control)Example:DeltaTwo.javapackage Two;import One.*;public class DeltaTwo public static void main(String args)Alpha alpha=new Alpha();/alpha.privat
16、eMethod();/illegal /alpha.packageMethod();/illegal /alpha.protectedMethod();/illegal alpha.publicMethod();/legal /System.out.println(iamprivate:“+alpha.iamprivate);/illegal /System.out.println(iampackage:“+alpha.iampackage);/illegal /System.out.println(iamprotected:“+alpha.iamprotected);/illegal Sys
17、tem.out.println(iampublic:“+alpha.iampublic);/legal National Taiwan UniversityDepartment of Computer Science and Information Engineeringstatic 關鍵字實體成員與類別成員變數或 methods 若宣告為 static,則此變數或 methods 即為類別變數(class variables)或類別方法(class methods)宣告為 static 的變數或 methods 不屬於任何此類別的物件,屬於此類別所有物件共同擁有此類別所有物件共同擁有宣告 s
18、tatic DataType VarName;static ReturnType MethodName(Arg List)使用 ClassName.VarName ClassName.MethodName(Arg List)National Taiwan UniversityDepartment of Computer Science and Information Engineeringstatic 關鍵字使用時機無論此類別擁有多少物件,這份資料只需要一份某種方法在實行時,與個別的物件無關即便是沒有任何物件被產生,依舊可以使用被宣告成 static 的變數與 methods;相反的,inst
19、ance variables 與 methods 必須透過物件才能實施在 static methods 裡,無法直接呼叫 instance methods 或直接使用 instance variables因為 instance variables 與 methods 必須透過物件才能實施National Taiwan UniversityDepartment of Computer Science and Information Engineeringstatic 關鍵字被用 static 宣告的類別方法和類別變數,意思上就像是其他程式語言中的全域函數(global functions)和全域
20、變數(global variables),例如:語言因此,如果要很多宣告成 static 的方法或變數的話,必須要謹慎使用!National Taiwan UniversityDepartment of Computer Science and Information Engineeringstatic 關鍵字-實體成員與類別成員National Taiwan UniversityDepartment of Computer Science and Information Engineeringstatic 關鍵字-實體成員與類別成員Example:StaticDemo.javapublic
21、class StaticDemo public int instanceInteger=0;public int instanceMethod()return instanceInteger;public static int classInteger=0;public static int classMethod()return classInteger;public static void main(String args)National Taiwan UniversityDepartment of Computer Science and Information Engineering
22、static 初值設定區塊class 變數或是實體變數,可以直接設定初值public class BedAndBreakfast public static final int MAX_CAPACITY=10;/initialize to 10 private boolean full=false;/initialize to false 限制:不能用 if-else 來設定初值設定初值時,不可以處理 exceptions若發生 exceptions,也無法做錯誤處理National Taiwan UniversityDepartment of Computer Science and Inf
23、ormation Engineeringstatic 初值設定區塊static 初值設定區塊Java 允許將 static 變數集合起來進行初始化動作語法:因為 x 和 isOK 都是 class 變數,無法在建構元中設定初值,且利用 static 初設設定區塊可以處理 exceptions。class TestClass static int x;static boolean isOK;static x=100;/static int x;isOK=false;/static isOK;National Taiwan UniversityDepartment of Computer Scie
24、nce and Information Engineering建構元(Constructors)修飾建構元的關鍵字private 如果一個類別裡所有的建構元都是宣告成 private 的話,那這個類別應該會有 public 的類別方法(class method),讓其他類別建立此類別之物件protected 只有該類別的 subclass,或是屬同一個 package 裡的類別,才可以使用此建構元public 所有類別都可以使用此建構元預設 只有同一個 package 裡的類別,才能使用此建構元National Taiwan UniversityDepartment of Computer S
25、cience and Information EngineeringYour Turn整理上次寫的 Rectangle 類別此類別必須完成下列要求此類別不提供 constructor 供外部存取(為 private)要提供三個 class methods 來建立 Rectangle 物件 第一個是使用預設長寬:長 8,寬 4(createRect)第二個是可以讓使用者自行指定(createRect)第三個複製矩形(cloneRect)顯示目前的長、寬之值(showLW)取得目前矩形之面積(getArea)畫矩形,由*構成邊長(drawRect)National Taiwan Universit
展开阅读全文