導航:首頁 > 編程語言 > 什麼是java的重寫

什麼是java的重寫

發布時間:2022-08-28 21:11:59

java編程中 重寫和重載 分別是什麼詳細告訴我好嗎

自己看書,沒必要在這發帖子啊。別人還不是發書給你看

❷ java中 什麼是隱藏什麼是重寫二者有何區別

隱藏是指當父類和子類有相同名字的屬性的時候,父類的同名變數形式上不可見了。但是實際還是存在的。
譬如A有int變數a = 10,父類B有變數a = 5;
當B b = new A()得時候,若用b.a 那麼父類的5就被隱藏了,此時b.a = 子類的10。在子類裡面訪問super.a得時候只能得到子類的值

重寫是針對方法的,通常是父類的方法在子類中重新寫過。當執行子類的實例得時候,實際運行的是子類的方法。在子類裡面可以通過super.method()來顯式的訪問。

❸ java方法的重寫

Java中的方法重寫ujiuye
方法的重載: 在同一個類中,出現多個同名的方法,參數列表不同,與返回值類型,修飾符無關
方法的重寫: 子類中出現和父類中一模一樣的方法(包括返回值類型,方法名,參數列表)

方法重寫的注意事項:ujiuye
1.重寫的方法必須要和父類一模一樣(包括返回值類型,方法名,參數列表)
2.重寫的方法可以使用@Override註解來標識
3.子類中重寫的方法的訪問許可權不能低於父類中方法的訪問許可權
許可權修飾符 : private < 默認(什麼都不寫) < protected < public

為什麼要重寫方法:
1.當父類中的方法無法滿足子類需求的時候,需要方法重寫
2.當子類具有特有的功能的時候,就需要方法重寫

重寫的應用
子類可以根據需要,定義特定於自己的行為。既沿襲了父類的功能名稱,又根據子類的需要重新實現父類方法,從而進行擴展增強。

❹ java中重寫和重載有什麼區別

三、
java中的重載(overload)
1、相同方法名,不同參數表。
2、方法重載時,對於參數的匹配有個向上就近原則。(這樣可以節省棧空間資源);
3、為什麼面向對象中要有方法重載?
方法的重載使同一類方法由於參數造成的差異對於對象的使用者是透明的。對象的使用者只負責把參數交給對象,而具體怎麼實現由對象內部決定。
4、java中的運算符重載
java中唯一重載的運算符是string類型的「+」號,任何類型+string類型結果都為stirng類型。
5、注意點:重載不僅出現在同一個類中,也可以出現在父子類中。
java中的重寫(override)
1、
參數表、方法名必須完全相同,訪問修飾符要求子類寬於父類。返回值類型在jdk5.0以前要求完全相同,
5.0以後可以父類返回一個對象a,子類返回一個該對象a的子類也是覆蓋。子類方法覆蓋父類方法時要求子類方法的訪問修飾符寬於或等於父類的訪問修飾符。
2、
為什麼面向對象中要有方法覆蓋?
覆蓋允許子類用自己特色的方法去替換調父類已有的方法。
3、
父類中的私有方法與子類中任何方法不夠成覆蓋關系,
也就是說只有父類被子類繼承過來的方法,才有可能與子類自己的方法構成覆蓋關系。
4、少覆蓋原則:如果子類覆蓋了父類過多的方法,那麼我們要重
新思考一下這兩個類之間到底是不是繼承關系。
註:子類的屬性和父類的屬性同名時叫遮蓋(區覆蓋)
屬性的遮蓋是沒有多態的。

❺ java語言中的重寫、重載、繼承

重寫,英文名是override,是指在繼承情況下,子類中定義了與其基類中方法具有相同型構的新方法,就叫做子類把基類的方法重寫了。這是實現多態必須的步驟。
重載,英文名是overload,是指在同一個類中定義了一個以上具有相同名稱,但是型構不同的方法。在同一個類中,是不允許定義多於一個的具有相同型構的方法的。

❻ java中方法重寫具體是什麼

方法重寫,就是一個類繼續了另一個類的時候,對父類的方法重新實現!

這個重新實現,就是使用相同的方法名,相同的參數列表和返回類型,訪問控制符使用和父類相同或者更寬。

舉例:
class F {
public String m(String s) {
return s;
}
}

class C extends F {
@Override
public String m(String s) {
return s+"extends";
}
}

❼ java什麼是方法重寫的語法規則

一、方法的重寫。
1、重寫只能出現在繼承關系之中。當一個類繼承它的父類方法時,都有機會重寫該父類的方法。一個特例是父類的方法被標識為final。重寫的主要優點是能夠定義某個子類型特有的行為。

class Animal {
public void
eat(){

System.out.println ("Animal is eating.");

}
}

class Horse extends Animal{

public void eat(){

System.out.println ("Horse is
eating.");
}

}

2、對於從父類繼承來的抽象方法,要麼在子類用重寫的方式設計該方法,要麼把子類也標識為抽象的。所以抽象方法可以說是必須要被重寫的方法。

3、重寫的意義。
重寫方法可以實現多態,用父類的引用來操縱子類對象,但是在實際運行中對象將運行其自己特有的方法。

public class Test {
public static
void main (String[] args) {

Animal h = new Horse();

h.eat();

}

}

class Animal {

public void eat(){

System.out.println ("Animal is
eating.");
}

}

class Horse extends
Animal{
public void
eat(){

System.out.println ("Horse is eating.");

}
public void
buck(){
}

}

一個原則是:使用了什麼引用,編譯器就會只調用引用類所擁有的方法。如果調用子類特有的方法,如上例的h.buck();
編譯器會抱怨的。也就是說,編譯器只看引用類型,而不是對象類型。

4、重寫方法的規則。
若想實現一個合格重寫方法,而不是重載,那麼必須同時滿足下面的要求!

重寫規則之一:重寫方法不能比被重寫方法限制有更嚴格的訪問級別。
(但是可以更廣泛,比如父類方法是包訪問許可權,子類的重寫方法是public訪問許可權。)
比如:Object類有個toString()方法,開始重寫這個方法的時候我們總容易忘記public修飾符,編譯器當然不會放過任何教訓我們的機會。出錯的原因就是:沒有加任何訪問修飾符的方法具有包訪問許可權,包訪問許可權比public當然要嚴格了,所以編譯器會報錯的。

重寫規則之二:參數列表必須與被重寫方法的相同。
重寫有個孿生的弟弟叫重載,也就是後面要出場的。如果子類方法的參數與父類對應的方法不同,那麼就是你認錯人了,那是重載,不是重寫。

重寫規則之三:返回類型必須與被重寫方法的返回類型相同。
父類方法A:void
eat(){} 子類方法B:int eat(){} 兩者雖然參數相同,可是返回類型不同,所以不是重寫。
父類方法A:int
eat(){} 子類方法B:long eat(){}
返回類型雖然兼容父類,但是不同就是不同,所以不是重寫。

重寫規則之四:重寫方法不能拋出新的異常或者比被重寫方法聲明的檢查異常更廣的檢查異常。但是可以拋出更少,更有限或者不拋出異常。
例:

import java.io.*;
public class Test
{
public static void main (String[]
args) {
Animal h =
new Horse();
try
{

h.eat();

}

catch (Exception e) {

}

}
}

class Animal
{
public void eat() throws
Exception{

System.out.println ("Animal is eating.");

throw new
Exception();
}

}

class Horse extends
Animal{
public void eat() throws
IOException{

System.out.println ("Horse is eating.");

throw new
IOException();
}

}
這個例子中,父類拋出了檢查異常Exception,子類拋出的IOException是Exception的子類,也即是比被重寫的方法拋出了更有限的異常,這是可以的。如果反過來,父類拋出IOException,子類拋出更為寬泛的Exception,那麼不會通過編譯的。
注意:這種限制只是針對檢查異常,至於運行時異常RuntimeException及其子類不再這個限制之中。

重寫規則之五:不能重寫被標識為final的方法。

重寫規則之六:如果一個方法不能被繼承,則不能重寫它。
比較典型的就是父類的private方法。下例會產生一個有趣的現象。

public class Test {
public static
void main (String[] args) {

//Animal h = new Horse();

Horse h = new
Horse();

h.eat();
}

}

class Animal {

private void eat(){

System.out.println ("Animal is
eating.");
}

}

class Horse extends
Animal{
public void
eat(){

System.out.println ("Horse is eating.");

}

}
這段代碼是能通過編譯的。表面上看來違反了第六條規則,但實際上那是一點巧合。Animal類的eat()方法不能被繼承,因此Horse類中的eat()方法是一個全新的方法,不是重寫也不是重載,只是一個只屬於Horse類的全新的方法!這點讓很多人迷惑了,但是也不是那麼難以理解。
main()方法如果是這樣:

Animal h = new Horse();
//Horse h = new
Horse();

h.eat();
編譯器會報錯,為什麼呢?Horse類的eat()方法是public的啊!應該可以調用啊!請牢記,多態只看父類引用的方法,而不看子類對象的方法!

❽ java中的方法重寫怎麼寫啊,什麼個意思

就是重新的意思啊!方法重寫和重載都是重新寫該方法的內容,都要求方法名要相同,但是參數順序、名字不同,這就是重寫和重載,重寫還必須是有繼承關系的類才可以重寫的!

❾ java中重寫和多態有什麼區別

重寫是Java實現多態技術的重要手段,還有就是重載
多態:指允許不同類的對象對同一消息做出響應。即同一消息可以根據發送對象的不同而採用多種不同的行為方式。(發送消息就是函數調用)
重寫:除了方法體裡面的代碼,其他的部分都要和父類中的一樣(訪問許可權要比父類中定義的訪問許可權寬松,如父類中定義為public,那子類重寫的方法也必須是public,不能是
protected
或者private)

閱讀全文

與什麼是java的重寫相關的資料

熱點內容
去哪裡找按摩師很漂亮的app 瀏覽:818
86x99用簡便演算法計算 瀏覽:829
php截圖flash 瀏覽:272
卸載聯想app哪個好 瀏覽:719
php文字轉圖片 瀏覽:329
豆客後台怎麼加密碼 瀏覽:574
jpg轉換pdf破解版 瀏覽:978
php基礎書籍推薦 瀏覽:777
伺服器與外網不通如何驗證 瀏覽:351
電子版是不是就是文件夾 瀏覽:50
游戲屬性文件加密 瀏覽:462
如何讓安卓手機桌面圖標下移 瀏覽:528
ubuntuphp5環境搭建 瀏覽:100
賭癮解壓視頻 瀏覽:917
晉城移動dns伺服器地址 瀏覽:296
php開源文庫系統 瀏覽:135
android記事本源碼 瀏覽:407
安卓11小游戲怎麼玩法 瀏覽:190
gif有損壓縮 瀏覽:937
windows下安裝linux命令操作 瀏覽:844