1. 程式人生 > >Java中子類繼承父類關於構造方法的問題

Java中子類繼承父類關於構造方法的問題

子類繼承了父類,若父類的構造方法沒有過載那麼,子類的構造方法也不需要通過super呼叫父類構造方法。一個類中如果構造方法重寫了並且帶了引數,那麼這個類的原來系統預設的無參構造方法便消失。由此,若一個父類中只有一個帶引數的構造方法,那麼在寫其子類的構造方法時必須先通過super呼叫父類的構造方法才能完成子類的構造方法而且super只能寫在子類構造方法體內的第一行。

父類:


public class Gouzao {
	
	public Gouzao(int i) {		//過載構造方法並使其帶有引數
		System.out.println(i);
	}
}

子類:


public class Gouzao2  extends Gouzao{
	public Gouzao2() {
		super(10);////////////////////必須寫在第一行!!!!!
	}
	
	public static void main(String[] args) {
		Gouzao2 G=new Gouzao2();
	}
}

Console輸出效果:

如果父類有無參構造方法,那麼在寫子類的構造方法時可以不用super呼叫,其實就是呼叫父類的無參構造方法,總的來說就是子類的構造方法建立時要呼叫父類的構造方法。

相關推薦

Java中子繼承關於構造方法的問題

子類繼承了父類,若父類的構造方法沒有過載那麼,子類的構造方法也不需要通過super呼叫父類構造方法。一個類中如果構造方法重寫了並且帶了引數,那麼這個類的原來系統預設的無參構造方法便消失。由此,若一個父類中只有一個帶引數的構造方法,那麼在寫其子類的構造方法時必須先通過super

java中子繼承和實現介面有同名方法怎麼處理

Java是一門單繼承語言,但是,在子類的繼承關係中,會存在父類和介面有同名方法的情況,這種情況該怎麼處理呢? 我們來一步步驗證: 1.子類繼承父類,實現介面,父類和介面有同名方法 public int

java中子繼承呼叫利用繼承方法時呼叫this

package cn.itcast.test1; class Parent{     public Object getObject(){         return this;     } } c

java中子繼承程式執行順序問題

測試程式碼: package test; public class FatherTest { private String name; public FatherTest(){ System.out.println("--父類的無參建構函式--"); } public

java中子繼承時是否繼承建構函式呢?

java繼承中對建構函式是不繼承的。 以下是例子:  public class FatherClass { public FatherClass() {       System.out.println(100); }  public FatherClass(int age)

java中子繼承的屬性說明

先看一段程式碼: 定義父類: 定義子類1: 定義子類2: 測試類: 執行結果為: 可以看出,用父類例項化,子類物件繼承父類物件的屬性值,子類建構函式中不super()也沒用。若想不繼承父類的屬性,直接用子類進行例項化。 這樣的情況建議使用abst

Java繼承方法的重寫(或者覆蓋,override)

1、子類重寫父類方法的方法名、引數型別必須與父類被重寫(被覆蓋)的方法相同; 2、子類方法的返回值型別必須小於等於父類被重寫的方法的返回值型別; 3、子類丟擲的異常小於等於父類方法丟擲的異常; 4

繼承後想要擴展方法

保留 回調 gen obj pcl logs col 父類 sel 1 >>> class PClass(object): 2 def setInfo(self,sex=‘Male‘): 3 self.gender = se

Java繼承成員中的問題

subclass 情況 討論 就會 之前 測試 public 測試結果 string   之前搞錯了,變量沒有“重寫”一說,只有方法才能被“重寫”。如果我們在子類中聲明了一個和父類中一樣的變量,那麽實際的情況是,子類的內存堆中會有類型和名字都相同的兩個變量。   現在考慮一

繼承中的構造

gen 向上轉型 類構造 復制 使用 article col 成員 ring 子類繼承父類,子類構造器會默認調用super()(無論構造器中是否寫有super()),用於初始化父類成員.同時當父類中存在有參構造器時,必須提供無參構造器,子類構造器中並不會自動繼承有參構造器,

c++子繼承函式呼叫特性原理以及與java的對比

c++ c++中子類繼承了父類,子類物件的函式和變數會接著新增在父類物件的記憶體後面,以此類推。。。 如果c++中父類的那個變數或者函式宣告為virtual虛擬函式,那麼子類物件的同名函式就直接覆蓋了(即在記憶體中真正的覆蓋,父類的這個函式已經不在了)父類物件的這個函式 如

Java繼承的載入順序,看著一篇就夠了

1. 程式碼 package parent; public class Child extends Father { static { System.out.println("

java中的繼承-子繼承的許可權問題

                                                java中的繼承         Java語言面向物件有三大特性:封裝、繼承、多型。其中的繼承,描述了一

python 子繼承的__init__方法

父類: 1 class A(object): 2 def __init__(self, name): 3 self.name = name 4 print("父類name:", self.name) 5 6 def getName(self): 7

關於子繼承後呼叫方法的問題

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 class ParentClass { public String m

JAVA基礎-子繼承例項化物件過程

class Parent {     // 靜態變數     public static String p_StaticField = "父類--靜態變數";     // 變數(其實這用物件更好能體同這一點,如專門寫一個類的例項)        //如果這個變數放在初始化塊的後面,是會報錯的,因為你根本沒

繼承,重寫方法,運用多型時呼叫重寫的方法時呼叫子的還是呼叫的?

package 第五天; public class Person { public void say() { System.out.println("我是Person的say方法"); } } 子類Student如下: package 第五天; publ

Java繼承並呼叫介面

父類程式碼: 功能:定義一個vehicle類及其中的set函式及get函式 public class vehicle { private double speed; private String name; private String color; publi

java中序列化之子繼承序列化

當一個父類實現Serializable介面後,他的子類都將自動的實現序列化。    以下驗證了這一點:  package Serial; import java.io.Serializable;  public class SuperC implements Serializable {//父類實現了序列化

python 子繼承__init__(轉載)

elf lpad pla 最好 就是 main 代碼 borde wid 轉載: http://www.jb51.net/article/100195.htm 前言 使用Python寫過面向對象的代碼的同學,可能對 __init__ 方法已經非常熟悉了,__init__