導航:首頁 > 編程語言 > java參數子類

java參數子類

發布時間:2022-07-14 12:13:05

java多態中重載方法參數分別為父類和子類時的疑惑

A ab = new B();
這里ab的引用類型是A,但是它指向的內存是類型為B的一個實例

想對ab進行方法調用,你調用的方法都必須在 class A裡面有的才行(因為你的引用類型為A)
這里 class A有show(A obj) show(D obj)著兩個方法

ab.show(b) 在class A中沒有找到類型匹配的方法,但是對b進行類型提升後,可以找到 show(A obj)方法,同理 ab.show(c)也是show(A obj)方法;但是ab內存地址指向一個類型為B內存空間,如果class B Override 了 class A的show(A obj)方法,則調用B的方法,反之,則調用A自己的方法

可以猜測 D d = new D(); ab.show(d)的結果是 A and D
如果注釋掉 class A的 show(A obj)方法, ab.show(b) ab.show(c)都會出錯。

這里你只要記住,能調用那些方法,由引用類型決定,具體執行情況,由實際內存對象類型決定

❷ JAVA中,子類將繼承父類的所有屬性和方法么~為什麼

是的,子類將繼承父類的非私有的屬性和方法。

在JAVA中,子類繼承父類的所有方法和屬性(構造方法要用關鍵super([參數])調用);繼承是JAVA中一個重要的特色,便於程序的編寫,提高代碼的重用性。

1、如果給子類i提供get和set 通過get調用的自然是子類的。

2、如果給父類和子類分別提供get和set,調的仍然是子類的,因為方法被重寫。

(2)java參數子類擴展閱讀

在繼承中用到super調用父類的構造

private String name;

private String sex;

public xinxin1(String name,String sex)

{

this.name=name;

this.sex=sex;

}

public void hello(){

System.out.println(「嗨!我是」+name+」我是」+sex+」孩」);

}

❸ java方法參數是父類,為什麼在方法實現中參數變成子類

因為子類繼承了父類的公有屬性和方法,所以如果參數需要一個類的話可以是這個類的本身或者他的子類!
希望可以幫到你!

❹ java 方法參數是父類,為什麼在方法實現中參數變成子類

java的重寫和重載是兩種在java中經常提到的兩組概念,它們在各個方面都有著很大的不同,下面詳細介紹你要了解的區別。
java的多態機制
即重寫,重寫主要用於子類和父類之間,在父類中定義了一個方法,同時在子類中對這個方法進行重寫,實現子類行為的特殊化,例如:
class
animal{
void
eat(){
system.out.print("animal
eat");}
}
class
tiger
extends
animal{
void
eat(){system.out.print("tiget
eat");}
}
子類中的eat方法即對父類的eat方法實現了重寫,重寫最常見的例子就是下面的聲明:
animal
some=new
tiger();
關於重寫,遵循以下的規則:
(1)重寫方法必須和被重寫方法具有相同的參數列表,返回類型必須和被重寫方法的返回類型相同或者是返回類型的子類型。
(2)重寫方法的訪問控制修飾符不能比被重寫方法更嚴格(比如一個在父類中聲明為public的方法重寫成一個protected的方法)。
(3)只有實例方法才能被重寫,超類中的final方法不能被重寫。
(4)重寫方法不能拋出新的檢查異常,或者是拋出比被重寫方法聲明的檢查異常更廣泛的檢查異常。
(5)注意一種特殊情況:如果超類的方法版本中聲明了檢查異常,但重寫的子類方法中沒有聲明,這時如果使用多態的方式進行調用,那麼編譯器認為你調用的是聲明了異常的方法。
(6)盡管多態是在編譯時確定對象的類型,但在編譯時,還是根據父類的方法聲明進行程序檢查。因此,如果子類中定義的方法,在父類中沒有定義,則會出項編譯錯誤。
java的重載機制:
重載的實質:在一個類中使用簽名相同的多個方法。
按照范圍,可以將重載分為在一個類中重載,和在子類和父類中重載。現分別解釋如下:
1.在一個類中定義多個具有相同簽名的方法,這些方法必須具有不同的參數列表,比如一個類的構造函數。
2.在父類和子類中,子類由於繼承而擁有了父類的某些方法,此時在子類再定義具有相同簽名的方法(必須具有不同的參數列表),這個地方很容易和重寫相混淆,因此千萬注意。
重載的規則主要記住亮點:
一是方法的參數列表必須改變,包括參數的類型,參數的個數多少,參數順序。
二是重載對返回類型,訪問修飾符,異常聲明沒有任何限制,可以作任意的修改。實質上,重載只是創建了一個方法而已,特殊的地方在於方法的名字。
注意下面的一種情況:(重寫和重載的混合)
class
useanimal{
void
dostuff(animal
sa){}
void
dostuff(tiger
sa){}
public
static
void
main(string[]
args){
useanimal
ua=new
useanimal();
animal
an=new
tiger();
ua.stuff(an);
}
}
此時,調用的方法dostuff的animal版本,因為調用重載方法是在編譯時決定的,an的聲明類型是animal。所以調用animal版本。
始終注意一點:重載的判斷始終是在編譯時決定

❺ JAVA 如何把子類的參數傳遞給父類

這個題考察的是子類繼承父類需要注意的地方,但是題出的很奇葩,你子類繼承父類時,題目給定的方法
public YoshiIslandTaxCalculator() {
super(getTaxRate());
double taxRate = 0.07;
}
會報編譯錯誤,原因是 顯示調用構造器時不能引用一個類的實例域,
按照繼承規則,子類的對象將可以使用到父類的方法,所以,父類中那些使用了構造器參數值的方法,其子類對象將可能訪問到。因此,必須要確保父類構造器的參數可以被賦值。
「可以被賦值」有兩種方式,
一是先實例化出對象,再通過setter賦值;
二是在實例化的時候就賦值,即通過構造器參數的形式傳參。
你的題目中,父類沒有提供默認的無參構造器。所以,方式一被封死。
而方式二在本例中,無法通過在實例化子類同時,同時為父類構造器變數賦值,編譯器意識到了這個錯誤,因此會報編譯錯誤。

/*
* 子類構造方法中必須通過super關鍵字調用父類的構造方法
* 構造子類之前必先構造父類,子類構造方法中第一句應有個默認的super方法
* 若子類沒有寫,則編譯器自動加入對父類無參構造的調用;
* 若父類的默認構造方法有參數,則子類也應寫super配參數,
* 或者在子類中重新定義super構造
* @param taxRate
*/
public YoshiIslandTaxCalculator(Double taxRate) {
super(taxRate);
}

❻ Java中參數類型是父類,但我用其子類作為參數傳入沒有錯誤,這是因為什麼,求專業解答

父類對象強轉為子類對象會丟失精度.你可以這樣father
father
=
new
child();這就是父類引用指向子類對象

你可以理解為child是father,但是不能理解為father是child。

第二種情況,因為是object的.object只是定義了最基本的方法、屬性。
所以強轉的時候,你可以認為是user是object,object是user都行。因為所有類都是object的子類,強轉後,不存在丟失精度.

❼ java中怎樣把參數值傳給子類的方法中

你是想說父類調用子類方法么?如果直接調用子類對象的方法也可以,但是會造成循環依賴等問題(並且該父類只能調用已知的子類),如非必要,盡量不要這樣做。
還有一種方法比較安全,就是把被調用的方法設置為抽象方法,讓子類繼承。這樣就不會循環依賴,也不會限定指定的子類。
PS:抽象方法在抽象類里可以是protected,但在介面里只能是public。

❽ JAVA中 子類與父類構造方法的關系 個人理解

編寫JAVA作業時在繼承的環節發現了一些錯誤,希望總結一些規律:(以下全部屬於自己歸納,可能有問題)
一句話概括就是:子類一定會調用(不是繼承)父類的構造方法!
即遵循一個原則:子類的構造一定是在父類已構造的基礎上!
這句話要分為幾種情況來理解(下面只討論父類有構造函數):
子類構造函數自動調用super() (也可以手動加上)
但如果父類只有含參數的構造方法,那麼子類必須申明一個構造方法,其中包含對super(args)的調用
一、父類含有無參構造函數
1、子類沒有構造方法或者含有無參的構造方法:
這種情況,都會默認地調用super()
2、子類含有有參數構造方法:
同樣會在首句默認調用super() //其實跟情況1類似
二、父類含有含參數的構造方法,不含無參數的構造方法:
子類沒得選擇:
子類必須申明一個構造方法(且含super的args),且方法里要首先調用super(args),否則報錯。
三、父類含 含參數的構造方法和無參的構造方法:
此時子類可以選擇性調用:
可以無構造方法:仍會默認調用super()
也可以有構造方法:其中會默認地調用super(),你也可以在開頭加上這句,如果你不希望調用父類默認的無參方法,那麼在 子類構造方法 中調用 父類含參構造方法。
上述看似情況復雜,其實基於其原則理解並不難。
綜上:java為了保持 子類的構造基於父類的構造 這一原則,子類構造時必須通過某些方式首先調用父類的構造方法,否則會報錯。

❾ Java抽象類中的抽象方法的參數對應的子類的方法的參數必須一致嗎

同學你這個涉及了兩個概念。
一個是抽象方法,一個是方法重載。
先說下概念:
抽象方法就是abstract描述的方法,它本身不含實現,必須由子類實現。
方法重載則是同一個方法名,但是參數類型或者參數個數不同。
理解了這個再看看你的問題。
如果你的子類的「對應的方法」有多個參數,那麼,你這個子類的該方法就不是所謂的「對應的方法」了,它是這個方法的重載。
所以,在這種情況下,子類還是必須實現一個和原抽象方法一致的方法。
即是說,「Java抽象類中的抽象方法的參數對應的子類的方法的參數必須一致」

閱讀全文

與java參數子類相關的資料

熱點內容
程序員和測試之間的關系 瀏覽:945
加密蚊帳什麼意思 瀏覽:149
javalistclear 瀏覽:605
哪個app上民宿多靠譜 瀏覽:825
重慶伺服器租用哪裡有雲伺服器 瀏覽:453
土星模擬器文件夾 瀏覽:902
文件夾文件袋文件盒 瀏覽:695
雲伺服器打開f8指令 瀏覽:243
盈透證券加密幣 瀏覽:72
阿里雲伺服器初始密碼怎麼修改 瀏覽:266
伺服器怎麼設定公用網路 瀏覽:99
程序員自己嘗尿檢測出糖尿病 瀏覽:593
列印添加pdf 瀏覽:932
蘋果解壓專家賬號 瀏覽:844
度曉曉app為什麼關閑 瀏覽:228
net文件是偽編解碼嗎 瀏覽:149
伴隨矩陣的matlab編程 瀏覽:63
單片機和h橋是什麼意思 瀏覽:314
51單片機光控設計論文 瀏覽:653
渦旋式壓縮機無油 瀏覽:731