【正文】
述應(yīng)用程序后 , 分析其結(jié)果 , 體會 Java訪問控制機制 , 可分下述幾種情形: ? 應(yīng)用程序入口 main()方法定義在一個非子類中 ? Parent和 Child類位于不同包中 ? Parent和 Child類位于不同包中 , main()方法定義在不同包內(nèi)的非子類中 14 方法的重寫 ? 在子類中可以根據(jù)需要對從父類中繼承來的方法進行改造 方法的重寫 ? 重寫方法必須和被重寫方法具有相同的方法名稱、參數(shù)列表和返回值類型 ? 重寫方法不能使用比被重寫方法更嚴格的訪問權(quán)限 15 方法重寫舉例 (1) public class Person { protected String name。 i = 。 Child c = new Child()。 i = 。} public static void main(String args[]){ int i。} } 11 訪問控制舉例 (2) class Child extends Parent{ private int c1 = 21。 private void fm1() {(in fm1() f1= + f1)。 } 9 訪問控制 Modifer Same Class Same Package Subclass Universe private Yes default Yes Yes protected Yes Yes Yes public Yes Yes Yes Yes 可以對 Java類中定義的屬性和方法進行訪問控制 規(guī)定不同的保護等級: 10 訪問控制舉例 (1) class Parent{ private int f1 = 1。 } } class Animal { private int i=1。 public Date birthDate。 public Date birthDate。 public int age。 public Date birthDate。 public String school。 public String getInfo() {...} } public class Student extends Person{ public String school。 public int getI(){ return i。 int f2 = 2。} void fm2() {(in fm2() f2= + f2)。 public int c2 = 22。 Parent p = new Parent()。 ()。 i = 。 // i = 。 protected int age。 public String getInfo() { return Name: + name + \nage: + age + \nschool: + school。 ()。 public String getInfo() { return Name: + name + \nage: + age。 } } 19 多態(tài)性 (1) ? 多態(tài) 在 Java中 , 子類的對象可以替代父類的對象使用 ? 一個對象只能有一種確定的數(shù)據(jù)類型 ? 一個引用類型變量可能指向 (引用 )多種不同類型的對象 Person p = new Student()。 = pku。 ()。 ()。 ? 異類收集 (heterogeneous collections) Person [] p= new Person[3]。 23 多態(tài)性應(yīng)用舉例 (2) ? 方法聲明的參數(shù)類型為父類類型,可以使用子類的對象作為實參調(diào)用該方法 public class Test{ public void method(Person e) { //…… ()。 } } 24 instanceof 操作符 public class Person extends Object {…} public class Student extends Person {…} public class Graduate extends Person {…} public void method1(Person e) { if (e instanceof Student) { // 處理 Student類型及其子類類型對象 } else if (e instanceof Graduate) { //處理 Graduate類型及其子類類型對象 } else { //處理 Person類型對象 } } 25 對象造型 (Casting ) ? 對 Java對象的強制類型轉(zhuǎn)換稱為造型 ? 在造型前可以使用 instanceof操作符測試一個對象的類型 ? 從子類到父類的類型轉(zhuǎn)換可以自動進行 ? 從父類到子類的類型轉(zhuǎn)換必須通過造型 (強制類型