国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

java學習之繼承

2019-11-15 00:42:18
字體:
來源:轉載
供稿:網友
java學習之繼承1.什么是繼承?

繼承是在一些比較一般的類(超類)的基礎上構造、建立、擴充新類(子類)的一種手段。并且子類與超類之間一般存在is-a關系,例如:在理論上來說,在Manager與Employee之間存在著明顯的is-a關系。is-a關系是繼承的一個明顯的特征。

2.繼承的作用
  • 繼承簡化了人們對事物的認識和描述,能清晰的體現相關類間的層次結構關系。
  • 繼承提供了軟件復用功能。若類B繼承類A,那么建立類B時只需要在描述與超類(類A)不同的少量特征(數據成員和成員方法)即可。這種方法能減少代碼量和數據冗余度,大大增加程序的重用性。
  • 繼承通過增強一致性來減少模塊間的接口與界面,大大增加了程序的易維護性。
  • 提供了多重繼承機制。從理論上來說,一個類可以多個超類的 子類 ,它可以從多個 超類 中繼承屬性與方法,這便是多繼承。 但java處于安全性和可靠性的考慮,僅支持單重繼承,而通過接口機制來實現多重繼承。
3.注意點
  • 當在子類中的方法不是在超類中定義的,超類的對象就不能使用它。
  • 當超類與子類具有相同的方法時,子類中的方法會覆蓋超類的這個方法
  • 子類中可以增加域、增加方法或覆蓋超類的方法,然而決不能刪除繼承的任何域或者方法。
4.實例(以下代碼來自于 Java核心卷|
  1. inheritance/ManagerTest.java

    package inheritance;public class ManagerTest{public static void main(String[] args){//constrcut a Manager objectManager boss = new Manager("Cracker",80000,1988,12,15);boss.setBonus(5000);Employee[] staff = new Employee[3];//fill the staff arry with Manager and Employee objectstaff[0] = boss;staff[1] = new Employee("Harry",50000,1986,10,1);staff[2] = new Employee("Tommy",40000,1987,3,15);//PRint out information about all Employee objects//體現了多態與動態捆綁for(Employee e : staff)System.out.println("name:" + e.getName() + ",salary:" + e.getSalary());}}
  2. inheritance/Employee.java

    package inheritance;import java.util.Date;import java.util.GregorianCalendarpublic class Employee {private String name;private double salary;private Date hireDay;public Employee(String n,double s ,int year,int month,int day){name = n;salary = s;GregorianCalendar calendar = new GregorianCalendar(year, month-1, day);hireDay = calendar.getTime();}public String getName(){return name;}public double getSalary(){return salary;}public Date getHireDay(){return hireDay;}public void raiseSalary(double byPercent){double raise = salary * byPercent / 100;salary += raise;}}
  3. inheritance/Manager.java

    package inheritance;//Manager類繼承了Employee類public class Manager extends Employee{private double bonus;public Manager(String n, double s, int year, int month, int day){//利用super關鍵詞調用Employee類的構造器super(n, s, year, month, day);bonus = 0;}//覆蓋了Employee類中的getSalary方法public double getSalary(){//用super關鍵字調用Employee類的方法double baseSalary = super.getSalary();return baseSalary + bonus;}public void setBonus(double b){bonus = b;}}
5.super關鍵字的使用(實例中出現的問題)
  • super調用超類的方法

    使Manager類中的getSalary方法返回薪水和獎金的總和,由于Employee類中的salaryprivate,所以在Manager類中用使用超類的salary時需使用super來調用。
  • super調用超類的構造器

    1. 由于Manager類的構造器不能訪問Employee類的私有域,所以必須利用Employee類的構造器對這部分私有數據進行初始化。
    2. 使用 super調用構造器的語句必須是子類構造器的第一條語句。
    3. 如果子類的構造器沒有顯式地調用超類的構造器,則將自動調用超類的默認(沒有參數)的構造器。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 新竹县| 富阳市| 松潘县| 夏津县| 盈江县| 河曲县| 新平| 修水县| 玉屏| 四子王旗| 扎囊县| 陆良县| 恭城| 黔西县| 大城县| 壶关县| 泸溪县| 昆山市| 阿拉尔市| 扬州市| 伊吾县| 文登市| 化隆| 乐山市| 曲周县| 东宁县| 宁国市| 中牟县| 儋州市| 济源市| 竹山县| 当阳市| 林口县| 抚顺市| 汕头市| 永寿县| 连山| 涿州市| 临江市| 巨野县| 原阳县|