這篇文章將為大家詳細講解有關(guān)如何在java中實現(xiàn)方法重寫,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
成都創(chuàng)新互聯(lián)公司是一家專注網(wǎng)站建設(shè)、網(wǎng)絡(luò)營銷策劃、重慶小程序開發(fā)公司、電子商務(wù)建設(shè)、網(wǎng)絡(luò)推廣、移動互聯(lián)開發(fā)、研究、服務(wù)為一體的技術(shù)型公司。公司成立十載以來,已經(jīng)為1000+戶外休閑椅各業(yè)的企業(yè)公司提供互聯(lián)網(wǎng)服務(wù)。現(xiàn)在,服務(wù)的1000+客戶與我們一路同行,見證我們的成長;未來,我們一起分享成功的喜悅。
在java中方法的重寫是建立在java類的三大特性之一:繼承性的基礎(chǔ)之上的,沒有繼承性也就不能談方法的重寫。方法的重寫是當(dāng)程序中父類的某一個方法并不能滿足子類的需求時,子類可以重新定義該方法的內(nèi)容與功能來滿足子類的需求的一種操作。那么方法的重寫具體是如何通過代碼來實現(xiàn)的呢,下面博主就帶大家一探究竟。
(1)定義一個多邊形類
class Polygon{ //屬性 private int number_side; //構(gòu)造器 public Polygon(int number_side) { super(); this.number_side = number_side; } //方法 public int getNumber_side() { return number_side; } public void setNumber_side(int number_side) { this.number_side = number_side; } public void show(){ System.out.println("Number_side is " + this.number_side); } }
在這個類中除了get和set方法之外,還有一個可以輸出多邊形邊數(shù)的show方法。
(2)定義一個正方形類繼承于多邊形類
class square extends Polygon{ //屬性 private double length; //構(gòu)造器 public square(double length, int number_side) { super(number_side); this.length = length; } //方法 public double getLength() { return length; } public void setLength(double length) { this.length = length; } //輸出邊數(shù)和邊長 public void show(){ System.out.println("This is a square"); super.show(); System.out.println("Length is " + this.length); } }
??可以看到,子類square中仍然有一個show方法,但是方法的功能和語句卻與其父類中的show方法大相徑庭。因為,在子類square中,子類square的show方法的功能不僅要能實現(xiàn)對邊數(shù)的輸出,更要實現(xiàn)對邊長的輸出,所以此時父類的show方法并不能滿足子類的需求了,開發(fā)者應(yīng)該重新編寫一個show方法來滿足子類的需求,這就是java中的方法重寫。
??在實際的開發(fā)過程中,應(yīng)用到方法重寫的操作還有其他的很多種情況,接下來本文將列舉幾個比較常用的方法重寫。
??在java的java.lang包下有一個類,名為Object。Object了是比較特殊的類,該類是所有類的父類。當(dāng)我們創(chuàng)建一個類時,如果沒有聲明繼承于我們自己創(chuàng)建的類,那么就繼承于Object,只不過java里省略了extends Object關(guān)鍵字。Object類中有兩個經(jīng)常使用到的方法:1.toString()方法;2.equals()方法。這兩種方法在開發(fā)者創(chuàng)建的類中經(jīng)常被重寫。
1、toString()方法
toString()
方法的功能是將一個對象以字符串的形式返回。例如:
Polygon p = new Polygon(3); System.out.println(p.toString());
這里調(diào)用的toString()
方法是Object類中的toString()
方法。
輸出為:
由此可見:當(dāng)調(diào)用Object類中的toString()
方法時返回的是一個字符串形式的對象,即該對象的地址。
在實際的應(yīng)用中通常重寫toString()
方法,為對象提供一個特定的字符串輸出模式,例如:
public class Test { public static void main(String[] args) { Polygon p = new Polygon(3); System.out.println(p.toString()); } } class Polygon{ //屬性 private int number_side; //構(gòu)造器 public Polygon(int number_side) { super(); this.number_side = number_side; } //..................................此處省略其他無關(guān)的方法 @Override public String toString() { return "Polygon [number_side=" + number_side + "]";
在多邊形類Polygon中重寫了toString()
方法,在main方法中我們創(chuàng)建一個Polygon的對象p并實例化,調(diào)用Polygon中重寫的toString()
方法。
此時系統(tǒng)輸出字符串形式的Polygon類名和其屬性。
2、equals()方法
equals()
方法在Object類中的具體體現(xiàn)是怎樣的呢?它的功能又是什么呢?老規(guī)矩,直接上代碼。
public boolean equals(Object obj) { return (this == obj); }
這是源代碼中Object類的equals()
方法的具體實現(xiàn),這樣我們便知道,Object中equals()
方法的功能是比較兩個對象的引用是否相等。當(dāng)我們調(diào)用Object類中的equals()
方法時:
public class Test { public static void main(String[] args) { square s1 = new square(5.2,4); square s2 = new square(5.2,4); System.out.println(s1.equals(s2)); } }
系統(tǒng)的輸出為:
然后我們重寫square類中的equals()
方法
public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; square other = (square) obj; if (Double.doubleToLongBits(length) != Double .doubleToLongBits(other.length)) return false; return true; }
再次調(diào)用square類中的equals()
方法時
public class Test { public static void main(String[] args) { square s1 = new square(5.2,4); square s2 = new square(5.2,4); System.out.println(s1.equals(s2)); } }
系統(tǒng)的輸出為:
相比之前的fasle,此時輸出true是因為重寫了equals()
方法,而重寫的equals()
方法比較的是兩個對象的實際內(nèi)容,即兩個對象的屬性(注意:equals()方法并不比較兩個對象的方法,因為無意義),相等就輸出true。
關(guān)于如何在java中實現(xiàn)方法重寫就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
本文標(biāo)題:如何在java中實現(xiàn)方法重寫
網(wǎng)頁網(wǎng)址:http://www.chinadenli.net/article4/jogsoe.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供虛擬主機、全網(wǎng)營銷推廣、靜態(tài)網(wǎng)站、品牌網(wǎng)站建設(shè)、網(wǎng)站導(dǎo)航、網(wǎng)站維護
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)