在java中如何方法重寫?
方法重寫的方法:1、【toString()】方法,將一個物件以字串的形式傳回;2、【equals()】方法,比較兩個物件的引用是否相等,程式碼為【sq s2=new sq(5,4);println(s1.equals(s2)】。
java中方法重寫的方法:
在java中方法的重寫是建立在java類別的三大特性之一:繼承性的基礎之上的,沒有繼承性也就不能談方法的重寫。方法的重寫是當程式中父類別的某一個方法並不能滿足子類別的需求時,子類別可以重新定義該方法的內容與功能來滿足子類別的需求的一種操作。那麼方法的重寫具體是如何透過程式碼來實現的呢,下面博主就帶大家一探究竟。
(1)定義一個多邊形類別
class Polygon{ //属性 private int number_side; //构造器 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方法之外,還有一個可以輸出多邊形邊數的show方法。
(2)定義一個正方形類別繼承於多邊形類別
class square extends Polygon{ //属性 private double length; //构造器 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; } //输出边数和边长 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方法的功能不僅要能實現對邊數的輸出,更要實現對邊長的輸出,所以此時父類別的show方法並不能滿足子類別的需求了,開發者應該重新寫一個show方法來滿足子類別的需求,這就是java中的方法重寫。
#在實際的開發過程中,應用到方法重寫的操作還有其他的很多種情況,接下來本文將列舉幾個比較常用的方法重寫。
在java的java.lang套件下有一個類,名為Object。Object了是比較特殊的類,該類是所有類的父類。當我們創建一個類時,如果沒有聲明繼承於我們自己創建的類,那麼就繼承於Object,只不過java裡省略了extends Object關鍵字。Object類別中有兩個常用到的方法:1.toString()方法;2.equals()方法。這兩種方法在開發者創建的類別中經常被重寫。
1、toString()方法
toString()
方法的功能是將一個物件以字串的形式傳回。例如:
Polygon p = new Polygon(3); System.out.println(p.toString());
這裡呼叫的toString()
方法是Object類別中的toString()
方法。
輸出為:
由此可見:當呼叫Object類別中的toString()
方法時傳回的是一個字串形式的對象,即該物件的位址。
在實際的應用中通常會重寫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; //构造器 public Polygon(int number_side) { super(); this.number_side = number_side; } //..................................此处省略其他无关的方法 @Override public String toString() { return "Polygon [number_side=" + number_side + "]";
在多邊形類別Polygon中重寫了toString()
方法,在main方法中我們建立一個Polygon的物件p並實例化,呼叫Polygon中重寫的toString()
方法。
此時系統輸出字串形式的Polygon類別名稱和其屬性。
2、equals()方法
#equals()
方法在Object類別中的具體體現是怎樣的呢?它的功能又是什麼呢?老規矩,直接上程式碼。
public boolean equals(Object obj) { return (this == obj); }
這是原始碼中Object類別的equals()
方法的具體實現,這樣我們便知道,Object中equals()
方法的功能是比較兩個物件的引用是否相等。當我們呼叫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)); } }
系統的輸出為:
然後我們重寫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; }
再次呼叫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)); } }
系統的輸出為:
比較之前的fasle,此時輸出true是因為重寫了equals()
方法,而重寫的equals( )
方法比較的是兩個物件的實際內容,也就是兩個物件的屬性(注意:equals()方法並沒有比較兩個物件的方法,因為無意義),相等就輸出true。
以上就是關於方法的重寫的基本知識和一些常用的點。之前在多態性的那一章部落客提到過:方法的重寫也是多態性的一種體現,現在我們可以知道,同樣都是toString()
和equals ()
方法,在自訂類別中重寫之後和Object類別中的功能完全不同,這也是同種事物的不同表現形式,符合多態性的本質。
推薦教學:《java影片教學》
###以上是在java中如何方法重寫?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

Java 8引入了Stream API,提供了一種強大且表達力豐富的處理數據集合的方式。然而,使用Stream時,一個常見問題是:如何從forEach操作中中斷或返回? 傳統循環允許提前中斷或返回,但Stream的forEach方法並不直接支持這種方式。本文將解釋原因,並探討在Stream處理系統中實現提前終止的替代方法。 延伸閱讀: Java Stream API改進 理解Stream forEach forEach方法是一個終端操作,它對Stream中的每個元素執行一個操作。它的設計意圖是處

PHP是一種廣泛應用於服務器端的腳本語言,特別適合web開發。 1.PHP可以嵌入HTML,處理HTTP請求和響應,支持多種數據庫。 2.PHP用於生成動態網頁內容,處理表單數據,訪問數據庫等,具有強大的社區支持和開源資源。 3.PHP是解釋型語言,執行過程包括詞法分析、語法分析、編譯和執行。 4.PHP可以與MySQL結合用於用戶註冊系統等高級應用。 5.調試PHP時,可使用error_reporting()和var_dump()等函數。 6.優化PHP代碼可通過緩存機制、優化數據庫查詢和使用內置函數。 7

PHP和Python各有優勢,選擇應基於項目需求。 1.PHP適合web開發,語法簡單,執行效率高。 2.Python適用於數據科學和機器學習,語法簡潔,庫豐富。

膠囊是一種三維幾何圖形,由一個圓柱體和兩端各一個半球體組成。膠囊的體積可以通過將圓柱體的體積和兩端半球體的體積相加來計算。本教程將討論如何使用不同的方法在Java中計算給定膠囊的體積。 膠囊體積公式 膠囊體積的公式如下: 膠囊體積 = 圓柱體體積 兩個半球體體積 其中, r: 半球體的半徑。 h: 圓柱體的高度(不包括半球體)。 例子 1 輸入 半徑 = 5 單位 高度 = 10 單位 輸出 體積 = 1570.8 立方單位 解釋 使用公式計算體積: 體積 = π × r2 × h (4

PHP適合web開發,特別是在快速開發和處理動態內容方面表現出色,但不擅長數據科學和企業級應用。與Python相比,PHP在web開發中更具優勢,但在數據科學領域不如Python;與Java相比,PHP在企業級應用中表現較差,但在web開發中更靈活;與JavaScript相比,PHP在後端開發中更簡潔,但在前端開發中不如JavaScript。

PHP和Python各有優勢,適合不同場景。 1.PHP適用於web開發,提供內置web服務器和豐富函數庫。 2.Python適合數據科學和機器學習,語法簡潔且有強大標準庫。選擇時應根據項目需求決定。

Java是熱門程式語言,適合初學者和經驗豐富的開發者學習。本教學從基礎概念出發,逐步深入解說進階主題。安裝Java開發工具包後,可透過建立簡單的「Hello,World!」程式來實踐程式設計。理解程式碼後,使用命令提示字元編譯並執行程序,控制台上將輸出「Hello,World!」。學習Java開啟了程式設計之旅,隨著掌握程度加深,可創建更複雜的應用程式。
