【正文】
第六章 Java類設(shè)計(jì) 2 本章內(nèi)容 ? Java類的繼承 ? 方法的重載、重寫(xiě) ? 多態(tài)性及其應(yīng)用 ? 成員訪問(wèn)控制 ? 對(duì)象的創(chuàng)建和初始化細(xì)節(jié) ? 幾種常用的 Java類 3 類的繼承 (1) ? 為描述和處理個(gè)人信息,定義類 Person: public class Person { public String name。 public int age。 public Date birthDate。 public String getInfo() {...} } Person +name : String +age : int +birthDate : Date +getInfo() : String 4 類的繼承 (2) ? 為描述和處理學(xué)生信息,定義類 Student: public class Student { public String name。 public int age。 public Date birthDate。 public String school。 public String getInfo() {...} } Student +name : String +age : int +birthDate : Date +school : String +getInfo() : String 5 類的繼承 (3) ? 通過(guò)繼承,簡(jiǎn)化 Student類的定義 : public class Person { public String name。 public int age。 public Date birthDate。 public String getInfo() {...} } public class Student extends Person{ public String school。 } Person +name : String +age : int +birthDate : Date +getInfo() : String Student +school : String 6 類的繼承 (4) ? 類繼承語(yǔ)法規(guī)則 : modifier class name [extends superclass] { declarations* } ? Object類是所有 Java類的最高層父類 ? Java只支持單繼承,不允許多重繼承 – 一個(gè)子類只能有一個(gè)父類 – 一個(gè)父類可以繼承出多個(gè)子類 7 單繼承舉例 (1) Person +name : String +age : int +birthDate : Date +getInfo() : String Student +school : String Soldier Officer Graduate +major : history +register() : void 8 單繼承舉例 (2) public class TestAnimals { public static void main (String [] args) { Horse b = new Horse()。 (())。 } } class Animal { private int i=1。 public int getI(){ return i。 } public void setI(int i){ =i。 } } class Horse extends Animal { int i=2。 } 9 訪問(wèn)控制 Modifer Same Class Same Package Subclass Universe private Yes default Yes Yes protected Yes Yes Yes public Yes Yes Yes Yes 可以對(duì) Java類中定義的屬性和方法進(jìn)行訪問(wèn)控制 規(guī)定不同的保護(hù)等級(jí): 10 訪問(wèn)控制舉例 (1) class Parent{ private int f1 = 1。 int f2 = 2。 protected int f3 = 3。 public int f4 = 4。 private void fm1() {(in fm1() f1= + f1)。} void fm2() {(in fm2() f2= + f2)。} protected void fm3() {(in fm3() f3= + f3)。} public void fm4() {(in fm4() f4= + f4)。} } 11 訪問(wèn)控制舉例 (2) class Child extends Parent{ private int c1 = 21。 public int c2 = 22。 private void cm1(){(in cm1() c1= + c1)。} public void cm2(){(in cm2() c2= + c2)。} public static void main(String ar