Java 重寫與重載

方法的重寫
重寫是子類對父類的允許訪問的方法的實現過程進行重新編寫, 返回值和形參都不能改變。
重寫的好處在于子類可以根據需要,定義特定于自己的行為。
也就是說子類能夠根據需要實現父類的方法。
重寫方法不能拋出新的檢查異常或者比被重寫方法申明更加寬泛的異常。例如: 父類 的一個方法申明了一個檢查異常 IOException,但是在重寫這個方法的時候不能拋出 Exception 異常,因為 Exception 是 IOException 的父類,只能拋出 IOException 的 子類異常。
方法的重寫規則:

  • 參數列表必須完全與被重寫方法的相同;
  • 返回類型必須完全與被重寫方法的返回類型相同;
  • 訪問權限不能比父類中被重寫的方法的訪問權限更低。例如:如果父類的一個方 法被聲明為public,那么在子類中重寫該方法就不能聲明為protected。
  • 父類的成員方法只能被它的子類重寫。
  • 聲明為final的方法不能被重寫。
  • 聲明為static的方法不能被重寫,但是能夠被再次聲明。
  • 子類和父類在同一個包中,那么子類可以重寫父類所有除了聲明為private和final 的方法。 子類和父類不在同一個包中,那么子類只能夠重寫父類的聲明為public和 protected的非final方法。
  • 重寫的方法能夠拋出任何非強制異常,無論被重寫的方法是否拋出異常。但是,重寫的方法不能拋出新的強制性異常,或者比被重寫方法聲明的更廣泛的強制性 異常,反之則可以。 構造方法不能被重寫。
  • 如果不能繼承一個方法,則不能重寫這個方法。

示例如下:

public class Brid {//父類public void fly(){System.out.println("我是一只小鳥");	}protected void defaultMetthod2(){ System.out.println("我是一只小小小鳥,怎么飛也飛不高"); }
}
public class Ostrch extends {public void fly(){	//重寫父類的方法super.fly(); System.out.println(" 一只鴕鳥,但我飛不高"); } 
}
public class Demo1 {public static void main(String[] args) {Ostrch ostrch = new Ostrch();ostrch.fly(); }
}

方法的重載
重載(overloading) 是在一個類里面,方法名字相同,而參數不同。返回類型可以相同也可以不同。
每個重載的方法(或者構造函數)都必須有一個獨一無二的參數類型列表。
最常用的地方就是構造器的重載。
Java程序中確定一個方法需要三個要素:
>調用者,也就是方法的所屬者,既可以是類,也可以是對象。
>方法名,方法的標識。方法名相同
>形參列表,當調用方法時,系統將會根據傳入的實參列表匹配。
重載規則:

  • 被重載的方法必須形參列表不一樣(參數個數或類型不一樣);
  • 被重載的方法可以改變返回類型;
  • 重載的方法可以改變訪問修飾符;
  • 被重載的方法可以聲明新的或更廣的檢查異常;
  • 方法能夠在同一個類中或者在一個子類中被重載。
  • 返回值類型不能作為重載函數的區分標準。

示例如下:

public void saya(String text){System.out.println(this.tall+"高的"+ this.name + "說:\""+text+"\"");}
public void saya(String text,String state){System.out.println(this.tall+"高的"+ this.name +state+"的說:\""+text+"\"");}

重寫與重載的區別
在這里插入圖片描述

  • 方法重載是一個類中定義了多個方法名相同,而他們的參數的數量不同或數量相同而類型和次序不同,則稱為方法的重載(Overloading)。
  • 方法重寫是在子類存在方法與父類的方法的名字相同,而且參數的個數與類型一 樣,返回值也一樣的方法,就稱為重寫(Overriding)。
  • 方法重載是一個類的多態性表現,而方法重寫是子類與父類的一種多態性表現。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/443377.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/443377.shtml
英文地址,請注明出處:http://en.pswp.cn/news/443377.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Java新增

在實踐項目中我們有可能需要做到新增功能,新增一張表,或是新增多張表。這里我新增的是一張表。 這里主要描述DAO層與Servlet 層: DAO 層: public class UserDaoImpl implements UserDao {private Connection con null;private P…

JSP根據狀態動態改變數據表格按鈕

有時候在開發的過程中會遇到需要根據狀態ID 來動態改變數據表格的按鈕&#xff0c;下面我主要講述兩種表格根據ID改變按鈕的方式。 下面這種我是用EL 表達式獲取表格中的值&#xff1a; <table class"table table-striped table-bordered table-hover" id"s…

Java 模糊查詢

在學習Java 這門語言過程中&#xff0c;會遇到無數的知識點與錯誤&#xff0c;最重要的是我們能夠在茫茫的代碼中找到突破口&#xff0c;并用心去汲取精華。 在很多時候我們會用到模糊查詢&#xff0c;這里是我在編碼過程中用到的模糊查詢。 JSP &#xff1a; <input value…

Java刪除表

Java刪除表 這里頁面我用了layui 框架做刪除的&#xff0c;這里需要引入layui 的css 與js 插件&#xff0c;這里寫出主要的代碼。 Jsp &#xff1a; //監聽行工具事件table.on(tool(test), function(obj){var data obj.data; //獲得當前行數據var date1 data.classifyColum…

原始分頁

Jsp &#xff1a; <div style"float: right;">當前為${currentPage}頁&#xff0c;共有${totalRow}條數據&#xff0c;共${totalPage}頁 <select style"border-radius: 18px;" id"pageSize" name"pageSize" onchange"c…

根據銀行卡號判斷銀行卡是否正確與歸屬銀行

校驗過程&#xff1a; 1.從卡號的最后一位數字開始&#xff0c;逆向將奇數位&#xff08;1&#xff0c;3&#xff0c;5 等等相加&#xff09; 2.從卡號最后一位數字開始&#xff0c;逆向將偶數位數字&#xff0c;先乘以2&#xff0c;如果乘積為兩位數&#xff0c;將個位數字相加…

根據年月日判斷第多少天,星期幾

1. 根據年月日判斷第多少天 Scanner是SDK1.5新增的一個類,可使用該類創建一個對象。 Scanner scannernew Scanner(System.in);  然后scanner對象調用下列方法&#xff08;函數&#xff09;,讀取用戶在命令行輸入的各種數據類型   next.Byte(),nextDouble(),nextFloat,nextIn…

解決MySQLyog 導入數據庫文件沒有反應

之前我在MySQL 中新建了一個數據庫&#xff0c;名為“onlineclassroom” 的數據庫&#xff0c;但是在將外部的.sql 文件導入進來之后發現&#xff0c;數據庫沒有反應&#xff0c;也看不到表數據&#xff0c;以為是沒有刷新問題&#xff0c;但是刷新之后發現還是沒有這個就很奇怪…

解決myeclipse報錯500,MySQLyog報錯誤碼問題

在myeclipse 寫了一個登錄&#xff0c;但在我登錄的時候卻報了500的空指針&#xff0c;我檢查了自己的登錄代碼&#xff0c;發現沒有問題&#xff0c;這不應該啊&#xff0c;然后在網上也尋找了一些解決方案&#xff0c;發現好像并不適用&#xff0c;500空指針如下&#xff1a;…

Java防止用戶同一時間重復登錄(包括異地登錄)

有時候我們在做登錄模塊過程中難免會遇到這種問題&#xff0c;即使我們給用戶進行了多重判斷&#xff0c;比如&#xff1a;用戶名&#xff0c;管理員&#xff0c;驗證碼&#xff0c;一系列的判斷… 你是否真正考慮到用戶的體驗&#xff0c;比如不能讓用戶在同一時間&#xff0c…

jquery點擊彈出播放視頻并顯示遮罩層

最近在做視頻播放的時候&#xff0c;發現用jquery的播放視頻可以很好的實現我所需要的效果。在之前請把插件引用進來&#xff0c;廢話不多說&#xff0c;代碼如下&#xff1a; <!DOCTYPE html> <html><head><meta charset"utf-8"><meta …

JS實現圖片循環滾動

之前在前端的時候有遇到這樣一個問題&#xff0c;實現 JS 圖片的循環滾動&#xff0c;然后鼠標移入的時候停止滾動&#xff0c;鼠標移開繼續滾動&#xff0c;這里無非就是設置了一個定時器&#xff0c;鼠標移上時清除定時器達到滾動停止的目的&#xff0c;鼠標移開時重設定時器…

有趣的滾動條

今天在搭前端頁面的時候&#xff0c;UI給過來的一個自定義的滾動條&#xff0c;要求必須與設計的一樣&#xff0c;覺得有點有趣&#xff0c;現在記錄一下。 效果圖&#xff1a; 具體代碼是這樣的&#xff1a; /*字體太長&#xff0c;這里我就減少一些*/ <div class"l…

查詢分頁的幾種sql語句

sql server 中的分頁查詢sql語句不跟mysql 一樣&#xff0c;mysql 用 limit 可以實現查詢sql分頁。如&#xff1a; select * from news where id>(select id from news limit 250000,1) limit 10; //相對執行效率高 select * from news limit 250000,10;mysql 中 limit總是…

c#解決在數據表格中無法顯示秒數問題

在查詢日期的時候&#xff08;年月日時分秒&#xff09;&#xff0c;發現丟失了秒&#xff0c;在這里我用的是自己 封裝的Vo類里面的時間轉換&#xff0c;沒有把秒數查詢出來&#xff0c;在Vo動不了手&#xff0c;我還不能對Controller 動手了&#xff1f; 查詢&#xff1a; 更…

解決 idea 復制jsp 文件過來頁面報404

今天在做功能的時候把另外一個jsp文件復制過來&#xff0c;發現頁面一直報404&#xff0c;咋搞的&#xff0c;檢查路徑沒有問題&#xff0c;報404這個就奇葩了&#xff0c;后面經過一番“洗腦”&#xff0c;才發現jsp文件復制過來少了一個特別重要的步驟&#xff0c;那就是重新…

解決ckeditor富文本在layui 彈框中大小字體等下拉不顯示

css <div class"layui-input-inline" style"width:1100px;"><div class"noticeContent"><textarea id"Introduce1" name"處分結果" class"form-control" style"z-index:19991015">&…

C# DateTime.Compare判斷兩個DateTime 日期是否相等

DateTime t1 DateTime.Now.Date; //2020/8/4 0:00:00 DateTime t2 Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"));//得到2020/8/4 16:24:54 DateTime t3 Convert.ToDateTime(t1.AddHours(16).AddMinutes(24).AddSeconds(t2.Second).AddM…

解決git上傳提交的時出現:Please tell me who you are.問題

今天安裝好git后&#xff0c;創建新項目&#xff0c;當git上傳提交時出現了一個問題&#xff0c;如下&#xff1a; Commit failed - exit code 128 received, with output: *** Please tell me who you are.Rungit config --global user.email "youexample.com"git …

vue解決v-for報錯 [vue/valid-v-for]Custom elements in iteration require ‘v-bind:key‘ directives

v-for報錯 [vue/valid-v-for]Custom elements in iteration require ‘v-bind:key’ directives.eslint-plugin-vue 原因&#xff1a;這是因為我安裝的enlint插件&#xff0c;它會對代碼的規范進行檢查。我這里用到v-for&#xff0c;但它是需要key值的&#xff0c;當不根據它的…