Java中子類能否繼承父類的私有屬性和方法
Java中子類繼承父類的私有屬性和方法
寫在前面:
已經正式從事java開發一年了,在寫一個demo的時候,突然發現繼承這塊的知識,以前都沒有注意到這些,原來自己掌握的很淺薄。
通過書本看到子類擁有父類的所有屬性和方法,於是寫程式去驗證,發現父類的私有屬性和方法,子類是不能訪問的,當然父類的某些私有屬性可以通過父類的非私有方法去訪問到,但是私有的方法不能在子類中直接訪問。於是我認為,子類不能繼承父類私有的屬性和方法;
但是通過網上查閱,分析了記憶體後,我發現我是錯誤的,在一個子類被建立時,首先會在記憶體中建立一個父類物件,然後在父類物件的外部放上子類獨有的屬性,這兩者結合起來形成了一個子類的物件。
所以在java繼承中,子類擁有父類所有屬性和方法可以這樣理解:
子類物件確實擁有父類物件中的所有屬性和方法,但是父類物件中的私有屬性和方法,子類是無法訪問到的,只是擁有,但不能使用。就像有些東西你肯恩擁有,但是你並不能使用;
所以子類物件時絕對大於父類物件的,所謂子類物件只能繼承父類非私有的屬性及方法的觀點是錯誤的。可以繼承,只是無法訪問到而已。
相關推薦
Java中子類能否繼承父類的私有屬性和方法
Java中子類繼承父類的私有屬性和方法 寫在前面: 已經正式從事java開發一年了,在寫一個demo的時候,突然發現繼承這塊的知識,以前都沒有注意到這些,原來自己掌握的很淺薄。 通過書本看到子類擁有父類的所有屬性和方法,於是寫程式去驗證,發現父類的私有屬性和方法,子類是不能訪問的
java中子類會繼承父類的構造方法嗎?
宣告:本人剛接觸java不久,如果理解的哪裡有錯誤或偏差,歡迎大家指正(希望大家帶著批判的眼光來看這篇文章)。 java中子類能繼承父類的構造方法嗎?帶著這個疑問我們首先來看個例子: //B類繼承A類 public class B extends A {
python中子類不能繼承父類的私有屬性和方法
#在子類中是不能繼承私有屬性和方法的, #但是私有屬性和方法可以在同一個類中被呼叫 class Person(object): def __init__(self,name): self.__name = name self._age = 12
java之中的四種訪問許可權和子類如何繼承父類特性
Public:對所有類可見 Protected:對同一包中的類,和子類可見 Private:僅對類本身可見 Default:對同一包中的類可見 為了理解方便,可見的意思也就是可以使用這個特性(域,方法,類),對子類可見就是子類也具有這些特性。但是繼承的時候,
檢視控制器父類是使用Xib建立的,子類如何繼承父類的樣式
-(id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { self = [super initWithNib
類:繼承-父類有帶參構造
#include <iostream> class A { int a; public: A(int a) { std::cout<<"父類構造\n"; } ~A() { std::cout<<"父類析構\n"; } }; class B
子類A繼承父類B, A a = new A(); 則父類B建構函式、父類B靜態程式碼塊、父類B非靜態程式碼塊、子類A建構函式、子類A靜態程式碼塊、子類A非靜態程式碼塊 執行的先後順序是?
(1)子類A繼承父類B, A a = new A(); 則: 父類B靜態程式碼塊->子類A靜態程式碼塊->父類B非靜態程式碼塊->父類B建構函式->子類A非靜態程式碼塊->子類A建構函式 (2)若子類建構函式中顯式的呼叫了父類
子類將繼承父類所有的資料域和方法
在一個子類被建立的時候,首先會在記憶體中建立一個父類物件,然後在父類物件外部放上子類獨有的屬性,兩者合起來形成一個子物件。子類物件確實擁有父類物件中所有的屬性和方法,但是父類物件中的私有屬性和方法,子類無法訪問,擁有卻無法訪問。
類的特性、公有私有屬性和析構
修改 err 訪問 裏的 不能 重新定義 money alex 直接 class Role(object):country="wuxi" #公有屬性def init(self, name, role, weapon, life_value=100, m
給類,實例綁定屬性和方法
comm tle obj odt 實例 () code pes method class Student(object): pass >>> s = Student() >>> s.name = ‘Michael‘ # 動態給實
解決Table不繼承父節點的屬性的方法
解決Table不繼承父節點的屬性的方法 發現table不繼承父節點的屬性。 解決方法:給html檔案加上<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1
java反射獲取私有屬性和方法demo
student物件package MaReflection; public class Student { private int num; private String name; static { System.out.println("[執行靜態區塊]");
java中為什麽接口中的屬性和方法都默認為public?
默認 bsp hole chapter -s 勝任 做出 com public 4)為什麽接口中的屬性和方法都默認為public?Sun公司當初為什麽要把java的接口設計發明成這樣? 【新手可忽略不影響繼續學習】(視頻下載) (全部書籍)答:如上所述,馬克-to-win:
python3面向物件(3)私有屬性和方法以及訪問私有屬性和方法的方式
python3中的私有屬性和方法是以__兩個下劃線開頭的: class Woman(object): #定義一個woman類 def __init__(self,name): self.name = name #公有屬性 self
資料封裝私有屬性和方法
1.私有屬性的封裝 私有屬性的含義是外部不能直接用 例項名.私有屬性名進行訪問,子類同樣也是一樣不能訪問, 這樣就是對資料進行封裝。只能用公共的方法裡呼叫私有屬性。 請看下這個例子`` class Date: def __init__(self,birt
轉:用反射呼叫物件的私有屬性和方法(經典)
大家都知道正常的呼叫是不可以訪問物件的private修飾的屬性和方法的,這也是java的封裝性原則。 但是有沒有方法可以強制去訪問物件的private修飾的屬性和方法呢?那就是用反射!(這個可能在面試題中被問到哦) 下面這個例子很簡單,就是定義一個dog類,裡面有個pri
PHPUnit測試私有屬性和方法
一、測試類中的私有方法: class Sample { private $a = 0; private function run() { echo $a; } } 上面只是簡單的寫了一個類包含,一個私有
javaScript中私有屬性和方法
javaScript並沒有特殊的語法來表示私有、保護、或公共屬性和方法,在這一點上與 java或其他語言是不同的,JavaScript中所有物件的成員是公用的: var myobj={ mypop:1, getProp:function(){
Java 中子類是否只繼承父類的非私有變數和方法?
今天在 CSDN 論壇中見到有人問在 Java 中子類是否只繼承父類的非私有變數和方法(原貼在此)。大部分跟貼都認為這句話是正確的,但是對於這個問題背後的本質理解卻是錯誤的。首先我們明確一下“繼承”一詞的概念,在 Java 中,繼承一詞的意義是有限制的。一個子類只能繼承其父類
java中子類繼承父類程式執行順序問題
測試程式碼: package test; public class FatherTest { private String name; public FatherTest(){ System.out.println("--父類的無參建構函式--"); } public