Java 中子類是否只繼承父類的非私有變數和方法?
首先我們明確一下“繼承”一詞的概念,在 Java 中,繼承一詞的意義是有限制的。一個子類只能繼承其父類的可訪問的成員,並且該子類沒有覆蓋或者說隱藏父類中的那些可訪問成員。所以,一個類的成員就是指在這個類中所宣告的屬性和方法,再加上從其父類繼承而來的屬性和方法。也就是說,子類是不能繼承父類的私有成員的。
雖然子類不繼承父類中的私有成員,但是在父類中生命的這些私有成員仍然是子類型別物件的一部分。因為在例項化物件的時候,只初始化在當前類中所宣告的屬性明顯是不足夠的,還需要初始化其父類中所有宣告的屬性。在例項化的過程中,
所以,我們可以說:子類不能從父類繼承私有成員,但是子類的物件是包括子類所不能從父類中繼承的私有成員的。
相關推薦
Java 中子類是否只繼承父類的非私有變數和方法?
今天在 CSDN 論壇中見到有人問在 Java 中子類是否只繼承父類的非私有變數和方法(原貼在此)。大部分跟貼都認為這句話是正確的,但是對於這個問題背後的本質理解卻是錯誤的。首先我們明確一下“繼承”一詞的概念,在 Java 中,繼承一詞的意義是有限制的。一個子類只能繼承其父類
轉:Java中子類是否可以繼承父類的static變量和方法而呈現多態特性
... test 關系 一個 道理 -c class 靜態 這一 原文地址:Java中子類是否可以繼承父類的static變量和方法而呈現多態特性 靜態方法 通常,在一個類中定義一個方法為static,那就是說,無需本類的對象即可調用此方法,關於static方法,聲明為sta
Java中子類是否可以繼承父類的static變數和static方法,以及父類的private屬性和private方法
轉載自以下原文: 原文連結1 原文連結2 一、子類可以繼承父類的private屬性和private方法: 1、子類繼承父類,子類擁有了父類的所有屬性和方法。 程式驗證,父類的私有屬性和方法子類是無法直接訪問的。當然私有屬性可以通過public修飾的
python中子類不能繼承父類的私有屬性和方法
#在子類中是不能繼承私有屬性和方法的, #但是私有屬性和方法可以在同一個類中被呼叫 class Person(object): def __init__(self,name): self.__name = name self._age = 12
Java子類是否可以繼承父類的私有的方法和屬性
舉例:public class Employee {private String name;private double salary = 15000.00;private Date birthDate;public Employee(String n, Date Dob)
java訪問類的私有變數和方法
import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; class A { pr
Java中的null物件也可以訪問static成員變數和方法
一般來說,一個類的物件要在例項化之後才可以訪問類中的成員變數和方法。如果它還是null,通常意義上我們就認為它不能訪問類中的成員。實際上確實不提倡這樣,而且null物件確實不能訪問例項成員(變數和方法),否則會引發NULLPointerException錯誤。
java中子類繼承父類程式執行順序問題
測試程式碼: package test; public class FatherTest { private String name; public FatherTest(){ System.out.println("--父類的無參建構函式--"); } public
java中子類繼承父類和實現介面有同名方法怎麼處理
Java是一門單繼承語言,但是,在子類的繼承關係中,會存在父類和介面有同名方法的情況,這種情況該怎麼處理呢? 我們來一步步驗證: 1.子類繼承父類,實現介面,父類和介面有同名方法 public int
java中子類繼承父類呼叫利用繼承方法時呼叫this
package cn.itcast.test1; class Parent{ public Object getObject(){ return this; } } c
java中子類會繼承父類的構造方法嗎?
宣告:本人剛接觸java不久,如果理解的哪裡有錯誤或偏差,歡迎大家指正(希望大家帶著批判的眼光來看這篇文章)。 java中子類能繼承父類的構造方法嗎?帶著這個疑問我們首先來看個例子: //B類繼承A類 public class B extends A {
java中子類繼承父類時是否繼承建構函式呢?
java繼承中對建構函式是不繼承的。 以下是例子: public class FatherClass { public FatherClass() { System.out.println(100); } public FatherClass(int age)
Java中子類繼承父類關於構造方法的問題
子類繼承了父類,若父類的構造方法沒有過載那麼,子類的構造方法也不需要通過super呼叫父類構造方法。一個類中如果構造方法重寫了並且帶了引數,那麼這個類的原來系統預設的無參構造方法便消失。由此,若一個父類中只有一個帶引數的構造方法,那麼在寫其子類的構造方法時必須先通過super
java 中子類如何實現對父類私有域的繼承
父類中的公有方法和域(屬性),在類繼承中將會被子類繼承,但是私有的將不能被繼承。 那麼在繼承中子類如何才能繼承到父類的私有域呢? 答案是:在子類的構造方法中通過super()方法呼叫父類的構造方法。 也就是,在構造子類的同時,為子類構造出跟父類相同的域。如此就在子類的物件
Java中子類能否繼承父類的私有屬性和方法
Java中子類繼承父類的私有屬性和方法 寫在前面: 已經正式從事java開發一年了,在寫一個demo的時候,突然發現繼承這塊的知識,以前都沒有注意到這些,原來自己掌握的很淺薄。 通過書本看到子類擁有父類的所有屬性和方法,於是寫程式去驗證,發現父類的私有屬性和方法,子類是不能訪問的
java中子類能不能繼承父類構造方法
結果有些和想象中的不一樣吧。 原因如下:其實每個子類構造方法的第一條語句,都是隱含地呼叫super(),如果父類沒有這種形式的建構函式,那麼在編譯的時候就會報錯。 所以父類中的構造方法是不能繼承的,但是在例項化子類的時候會呼叫父類的構造方法,這樣就能解釋下面這種情況了。面試題目1:指出下面
java中子類繼承父類的屬性說明
先看一段程式碼: 定義父類: 定義子類1: 定義子類2: 測試類: 執行結果為: 可以看出,用父類例項化,子類物件繼承父類物件的屬性值,子類建構函式中不super()也沒用。若想不繼承父類的屬性,直接用子類進行例項化。 這樣的情況建議使用abst
Java 子類繼承父類成員中的問題
subclass 情況 討論 就會 之前 測試 public 測試結果 string 之前搞錯了,變量沒有“重寫”一說,只有方法才能被“重寫”。如果我們在子類中聲明了一個和父類中一樣的變量,那麽實際的情況是,子類的內存堆中會有類型和名字都相同的兩個變量。 現在考慮一
c++子類繼承父類函式呼叫特性原理以及與java的對比
c++ c++中子類繼承了父類,子類物件的函式和變數會接著新增在父類物件的記憶體後面,以此類推。。。 如果c++中父類的那個變數或者函式宣告為virtual虛擬函式,那麼子類物件的同名函式就直接覆蓋了(即在記憶體中真正的覆蓋,父類的這個函式已經不在了)父類物件的這個函式 如
Java子類繼承父類,類的載入順序,看著一篇就夠了
1. 程式碼 package parent; public class Child extends Father { static { System.out.println("