1. 程式人生 > >Java 重寫和過載的詳解

Java 重寫和過載的詳解

一,過載

1.概念:對於同一個類,如果這個類裡面有兩個或者多個重名的方法,但是方法的引數個數、型別、順序至少有一個不一樣,這時候局構成方法過載

2.示例:

public class Test{
  public void a( ){
  };
   public void a( int i){
   };
}
說明:在Test類中有兩個方法,名字都相同,都是a。在呼叫方法a時,如果不傳引數,則系統會自動呼叫第一個方法a,如果傳入一個 int 型別的引數,則系統呼叫第二個方法a。
public class Test{
  public void a(int i){
  };
  public void a(String j){
  };
}
說明:在Test類中有兩個同名的方法a。在呼叫方法時,如果傳入一個int型別的引數,則會自動呼叫第一個a方法,如果傳入一個String型別的引數,則會自動呼叫第二個方法a。
public class Test{
  public void a(int i,String j){
  }
  public class a(String j,int i){
  }
}
說明:在Test類中有兩個同名的方法。在呼叫方法時,如果傳入的第一個引數型別為int,第二個引數型別為String,則自動呼叫第一個方法a。如果傳入的第一個引數為String型別,第二個引數型別為int,則自動呼叫第二個方法a。

3.作用:

方法過載就是對不同資料型別的的資料實現相似的操作。

二,重寫

1.概念:

當一個子類繼承一父類,而子類中的方法與父類中的方法的名稱,引數個數、型別都完全一致時,就稱子類中的這個方法重寫了父類中的方法。

重寫也是覆蓋 override

2.前提:

必須要有繼承關係

3.特點:

(1):當子類重寫了父類的函式,那麼子類的物件如果呼叫該函式,一定呼叫的是重寫過後的函式。

   可以通過super關鍵字進行父類的重寫函式的呼叫。

(2): 繼承可以使得子類增強父類的方法

4.細節:

(1): 函式名必須相同

(2):引數列表必須相同

(3): 子類重寫父類的函式的時候,函式的訪問許可權必須大於等於父類的函式的訪

問許可權否則編譯報錯

(4):子類重寫父類的函式的時候,返回值型別必須是父類函式的返回值型別或該返回值型別的子類。不能返回比父類更大的資料型別

5.示例:

class Animal{
	int x=1;
	String name;
	
	void eat(){
		System.out.println("吃東西");
	}
	void shout(){
		System.out.println("我是動物");
	}
}

class Dog extends Animal{
	
	
	void eat(){
		System.out.println("啃骨頭");
	}
	void shout(){
		System.out.println("旺旺");
	}
	void eat(String food){
		System.out.println("吃:"+food);
	}
}
class Cat extends Animal{

	void eat(){
		System.out.println("吃老鼠");
	}
	void shout(){
		System.out.println("喵喵");
	}
}

class Demo9{

	public static void main(String[] args){
		Dog d=new Dog();
		d.shout();
		d.eat();
		
		Cat c=new Cat();
		c.shout();
		c.eat();
		System.out.println();
     	}
說明:

動物類有名字,有吃和叫的方法

狗繼承動物重寫父類吃和叫的方法

貓繼承動物重寫父類吃和叫的方法

三,過載和重寫的不同

1:過載(overload):  

       1:前提: 所有的過載函式必須在同一個類中

       2:特點:

       函式名相同,引數列表不同,與其他的無關(訪問控制符、返回值型別)

       3:不同:

個數不同 、 順序不同、 型別不同

2:重寫(override)

     1:前提: 繼承

     2:特點:

       函式名必須相同、引數列表必須相同。

       子類的返回值型別要等於或者小於父類的返回值

相關推薦

Java 重寫過載

一,過載 1.概念:對於同一個類,如果這個類裡面有兩個或者多個重名的方法,但是方法的引數個數、型別、順序至少有一個不一樣,這時候局構成方法過載 2.示例: public class Test{ public void a( ){ }; public void

java PatternMatcher

而且 建議 exc regex 示例 aabb 工廠 sta 數字 結論:Pattern與Matcher一起合作.Matcher類提供了對正則表達式的分組支持,以及對正則表達式的多次匹配支持. 單獨用Pattern只能使用Pattern.matcher(String reg

Java物件 (一)

一、面向物件簡述 面向物件是一種現在最為流行的程式設計方法,幾乎現在的所有應用都以面向物件為主了,最早的面向物件的概念實際上是由IBM提出的,在70年代的Smaltalk語言之中進行了應用,後來根據面向物件的設計思路,才形成C++,而由C++產生了Java這門

Java特點特性

Java是由Sun Microstystems公司於1995年5月推出的程式設計語言。    特點:             跨平臺:指可以不受計算機的硬體和作業系統的限制,而獨立於平臺。因為java中有自帶的JVM,它執行經過javac命令編譯完成的java原始碼所生成的c

JAVA重寫過載的區別

問: Java 過載與重寫是什麼?有什麼區別? 答:   過載(Overload)是讓類以統一的方式處理不同型別資料的一種手段,實質表現就是多個具有不同的引數個數或者型別的同名函式(返回值型別可隨意,不能以返回型別作為過載函式的區分標準)同時存

java Comparable Comparator及 區別(附程式碼)

java中,對集合物件或者陣列物件排序,有兩種實現方式。 即:(1)物件實現Comparable 介面         (2)定義比較器,實現Comparator介面。 下面會簡要介紹這兩種方法的區別,並附上實現程式碼,供大家參考。 Comparable介紹 Compar

Java中的異常處理

stat 一個 局部變量 lose 出了 object sta tof .html 原文出處:代碼鋼琴家 簡介 程序運行時,發生的不被期望的事件,它阻止了程序按照程序員的預期正常執行,這就是異常。異常發生時,是任程序自生自滅,立刻退出終止,還是輸出錯誤給用戶?或者用C語

Java中==equals區別+案例

兩個 布爾型 整數 返回 boolean 和equal clas 定義 true 一開始遇見==和equals我也是分不清,後來看了很多博客,收益匪淺, 擔心以後給忘了,所以寫下這個,以後復習可以用。 (有哪裏寫得不對的,希望可以留言幫忙改進,大家一起共同進步) 一、Jav

java類型轉換(自動轉換強制轉換)

代碼 oid 高精 log 相加 println 類型轉換詳解 範圍 void 自動轉換 class Hello { public static void main(String[] args) { //自動轉換 int a = 5; byte b = 6

Java中List,SetMap及其區別

內部 特殊 set contain 快速查找 簡單 rar dset 維護 Java中的集合包括三大類,它們是Set(集)、List(列表)和Map(映射),它們都處於java.util包中,Set、List和Map都是接口,它們有各自的實現類。Set的實現類主要有Hash

java的UDPTCP北京-賽車平臺出租源碼分析

ati 消息 byte ide 一段 pack catch 打包 println 1、需求分析北京-賽車平臺出租Q1446595067 最近在和硬件做網口的傳輸協議,一開始告訴我說用TCP的socket進行傳輸,我說沒問題,就寫了個socket的發送和接收方法。but過了沒

BFSDFS以及java實現(轉載)

作者: Leo-Yang 原文都先發布在作者個人部落格: http://www.leoyang.net/ 本文版權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段宣告,且在文章頁面明顯位置給出原文連線,否則保留追究法律責任的權利. 前言

Java程式設計師從笨鳥到菜鳥之(四十八)細談struts2(十)ognl概念原理

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

java中BiFunctionFunction

關於Lambda詳見lambda描述。關於函式式介面詳見函式式介面 首先我們來看一下BiFunction類,程式碼如下: package java.util.function; import java.util.Objects; /**  * Represents a fu

Java 10 var關鍵字示例教程

int runner 方法 操作符 val l命令 決定 作用 系統路徑 在本文中,我將通過示例介紹新的Java SE 10特性——“var”類型。你將學習如何在代碼中正確使用它,以及在什麽情況下不能使用它。 介紹 Java 10引入了一個閃亮的新功能:局部變量類型推斷。對

【搞定Java基礎】之 i++ ++i

目  錄: 一、i++ 和 ++i 的基本概念 二、i++ 和 ++i 的實現原理 三、i++ 和 ++i 在使用時的一些坑 3.1、i = i++ 導致的結果“異常” 3.2、多執行緒併發引發的混亂 一、i++ 和 ++i 的基本概念 在幾乎所有的指令式程

java中方法重寫過載的那些事兒

1.重寫和過載分別是什麼意思 重寫(Override): 重寫是子類重新定義了父類的同名同參方法,覆蓋了父類的方法,因此,我們也把這種方式叫做“覆寫”。 過載(Overload): 過載是同一個類中,宣告的方法名字相同,但是引數不同的個方法,通過呼叫時傳不同的引數來達到呼叫名

Java 中的異常處理

原文出處: 程式碼鋼琴家 簡介 程式執行時,發生的不被期望的事件,它阻止了程式按照程式設計師的預期正常執行,這就是異常。異常發生時,是任程式自生自滅,立刻退出終止,還是輸出錯誤給使用者?或者用C語言風格:用函式返回值作為執行狀態?。 Java提供了更加優秀的

Java併發--互斥同步--Java兩種鎖機制synchronizedReentrantLock

Java 提供了兩種鎖機制來控制多個執行緒對共享資源的互斥訪問,第一個是 JVM 實現的 synchronized,而另一個是 JDK 實現的 ReentrantLock。 synchronized 1. 同步一個程式碼塊 public void func() {

Java中ComparableComparator

該文基於JDK1.8。 一、Comparable<T> Comparable<T>原始碼如下: package java.lang; import java.util.*; /** * This interface imposes a total orde