iT邦幫忙

2026 iThome 鐵人賽

DAY 20
0

本日學習:
類別的繼承
改寫

  1. 觀念類似多載
  2. 若在父類別與子類別中有相同名稱的函數,且定義名稱、引數個數與傳回值資料型別完全相同,會先呼叫「子類別」
  3. 不論宣告的是子類別還是父類別的物件,都可以呼叫子類別裡的函數 → Circle cir = new Coin(),透過父類別存取子類別物件的成員,但不能反向,例如: Coin coin = new Circle()

super() & this()

  1. super.資料成員:存取父類別的資料成員
  2. super.函數名稱():呼叫父類別的函數
  3. this():印出實例變數與區域變數
  • this:可以存取自己本身類別的資料成員、函數成員與建構子
  • super:可以存取父類別的資料成員、函數成員與建構子,有繼承關係才可使用

is-a & has-a

  1. is-a:繼承
  2. has-a:擁有,例如 C 類別裡包含了 D 類別的物件

設定終止繼承

  1. 在父類別的函數前加上 final,就不能在子類別中被改寫
  2. 也可以加在資料成員前面,例如:protected static final double PI = 3.14; 如此便無法在程式碼的任何地方再做修改
  3. 不希望某個類別被其他類別繼承時也可以使用,例如:final class Circle{}
  4. final 宣告後,函數不能被改寫,類別不能被繼承

Object 類別

  1. 當一個類別沒有指定其父類別時,會自動設定繼承自 Object 這個類別
  2. Object:置於 java.lang(java.lang.Object)
  3. 類別之源
  4. Object 類別裡常用的函數
  5. Class getClass():取得呼叫 getClass() 的物件所屬之類別
    • 任何類別均可呼叫
  6. Boolean equals(Object obj):兩格類別變數所指向的是否為同一個物件
    • true or false
  7. String toString()將呼叫 toString() 的物件轉成字串
    • 例如:a.toString()
    • 預設的 toString() 不能表達 a 的真實內容,因此通常會改寫它,然後再印出 a 的內容
    • 改寫:
      public String toString(){
      String str = "toString() called, num = " + num;
      return str;
      }

上一篇
Day 19:類別(7)
下一篇
Day 21:類別(9)
系列文
從零開始學程式語言:Java 新手修煉記 共 22 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言