首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

Java 易忘知識點:繼承與訪問修飾符的深度解析

     編輯:Java 綜合教學

Java 易忘知識點:繼承與訪問修飾符的深度解析

面試經典題:「子類繼承父類所有非私有屬性和方法,這句話對嗎?」若回答「對」,則掉入陷阱。關鍵在於 「非私有」的定義 與 包訪問權限的隱性限制。

四大訪問修飾符實戰對照表

修飾符同類同包異包子類異包非子類
public✓✓✓✓
protected✓✓✓✗
default (包私有)✓✓✗✗
private✓✗✗✗

核心誤區拆解

「非私有」≠「可被子類繼承」

  • default (包私有) 成員屬於「非私有」,但 異包子類不可見,故無法繼承。
  • protected 才是「默認 + 異包子類可見」的組合。

因此正確表述應為:子類繼承父類所有 public、protected 以及同包下的 default 成員。

介面繼承的特殊性

題目變體:「實現類繼承父介面所有非私有屬性和方法對嗎?」

  • 介面成員隱含 public static final (屬性) / public abstract (方法)
  • 介面 不存在私有成員 (Java 8 前),故「實現類繼承介面所有成員」在舊版本中成立。
  • Java 9+ 引入 private 介面方法,但屬性仍隱含 public static final。

驗證實驗設計

可編寫測試類驗證修飾符行為:

  • static:子類能否用類名直接調用
  • final:子類能否修改屬性值
  • abstract:介面中能否寫具體方法 (Java 8 default 方法)
  • public:普遍可見性驗證

記憶口訣

public 走天下,protected 留給兒子和同包,
default 只認包不認兒子,private 鎖家門。

持續更新提醒

本系列將持續收錄 Java 開發中易混淆、易遺忘的核心知識點,歡迎持續關注。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved