[轉載] Java中的靜態方法不能被子類重寫

參考鏈接: 可以在Java中重載或重寫靜態方法嗎

Java中的靜態方法不能被子類重寫

?

特點:靜態方法屬于類的方法,也屬于對象的方法,但是靜態方法隨類的存在。

結論:Java中的靜態方法不能被子類重寫,實際上,子類的靜態方法隱藏了父類的靜態方法,因此父類的子類的靜態方法同時存在,只不過父類通過類名(或對象名)調用的是父類的靜態方法,子類通過類名(或對象名)調用的是子類的靜態方法。

?

(1)代碼如下:

public class Test {

? ? public static void main(String[] args) {

? ? ? ? Father f1 = new Son();

? ? ? ? f1.methon();? ? ? ? ? ? // static(靜態)方法的調用,不支持多態,所以此處調用的父類的靜態方法

? ? ? ? f1.doWork();? ? ? ? ? ? // 非static(靜態)方法的調用,支持多態

? ??????

? ? ? ? System.out.println("---------------");

? ??????

? ? ? ? Son s1 =new Son();

? ? ? ? s1.methon();

? ? ? ? s1.doWork();

? ? }

?

}

class Father {

? ? public static void methon(){

? ? ? ? System.out.println("Father static methon()");

? ? }

? ??

? ? public void doWork(){

? ? ? ? System.out.println("Father doWork()");

? ? }

}

?

class Son extends Father {

? ? public static void methon(){

? ? ? ? System.out.println("Son static methon()");

? ? }

? ? public void doWork(){

? ? ? ? System.out.println("Son doWork()");

? ? }

}

打印結果:

Father static methon()

Son doWork()

---------------

Son static methon()

Son doWork()

?

?

結論:

(1)靜態方法不支持多態。(final,private 方法也如此)

(2)靜態方法可通過類名直接調用,也可通過類的實例化對象調用,因此Father 的實例化對象f1調用的是父類(不是子類)的靜態方法。

(3)靜態方法的綁定時期為代碼的編譯器期,也叫前期綁定。非靜態的方法屬于程序的執行期綁定,也就運行期綁定。

?

?

對于結論(3)舉個極端的例子

public class Test {

? ? public static void main(String[] args) {

? ? ? ? Father f1 = new Son();

? ? ? ? f1.methon();? ? ? ? ? ? // static(靜態)方法的調用,不支持多態,所以此處調用的父類的靜態方法

? ? ? ? f1.doWork();? ? ? ? ? ? // 非static(靜態)方法的調用,支持多態

? ??????

? ? ? ? System.out.println("---------------");

? ??????

? ? ? ? Son s1 =new Son();

? ? ? ? s1.methon();

? ? ? ? s1.doWork();

? ??????

? ? ? ? System.out.println("---------------");

? ??????

? ? ? ? Father f2= null;? ?// 創建一個父類變量的空引用

? ? ? ? f2.methon();? ? ? ?// 調用父類的靜態方法,此處竟然不出錯,表明了靜態方法的特殊性

? ? }

?

}

class Father {

? ? public static void methon(){

? ? ? ? System.out.println("Father static methon()");

? ? }

? ??

? ? public void doWork(){

? ? ? ? System.out.println("Father doWork()");

? ? }

}

?

class Son extends Father {

? ? public static void methon(){

? ? ? ? System.out.println("Son static methon()");

? ? }

? ? public void doWork(){

? ? ? ? System.out.println("Son doWork()");

? ? }

}打印結果:

?

Father static methon()

Son doWork()

---------------

Son static methon()

Son doWork()

---------------

Father static methon()

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

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

相關文章

2015-03-19 create php alternative for myslq_result in mysqli(PHP)--PDO Tutorial for Mysql Developers

來源:http://www.bestwebframeworks.com/tutorials/php/152/create-php-alternative-for-mysql_result-in-mysqli/ 內容: If you are migrating from PHP 5.5 to a newer version of PHP - you might be interested in a MySQL to MySQLi/PDO migration …

[轉載] [OpenGL] shadow mapping(實時陰影映射)

參考鏈接: Java中靜態函數的陰影(方法隱藏) 轉載原創:ZJU_fish1996 http://blog.csdn.net/zju_fish1996/article/details/51932954 source:原文地址 code:點擊可以直接下載源代碼 1978年,Lance Williams在其發表的論文《Casting cur…

[轉載] java synchronized靜態同步方法與非靜態同步方法,同步語句塊

參考鏈接: Java中的靜態方法與實例方法 java synchronized靜態同步方法與非靜態同步方法,同步語句塊 并發編程 線程同步 靜態方法鎖 非靜態方法鎖 同步塊 進行多線程編程,同步控制是非常重要的,而同步控制就涉及到了鎖。 對代…

SpringBoot安裝和創建簡單的Web應用

SpringBoot安裝 方式一: Eclipese->Help->Eclipse Marketplace ->Finde STS -> Install 注意:安裝過程中挺慢,而且可能會報錯,報錯時需要重復以上步驟(重新安裝STS后,安裝進度接之前的繼續進行…

[轉載] JAVA 堆棧 堆 方法區 靜態區 final static 內存分配 詳解

參考鏈接: 在Java中為靜態最終static final變量分配值 轉載來源:https://blog.csdn.net/peterwin1987/article/details/7571808 Java棧與堆 堆:順序隨意 棧:后進先出(Last-in/First-Out). Java的堆是一個運行時數據區,類的對象從中分配空間。這些…

android學習之-Style樣式的定義

這個例子主要是寫了配置文件&#xff0c;main.xml <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas.android.com/apk/res/android" android:orientation"vertical" android:lay…

[轉載] JAVA泛型雜談--擦除,協變,逆變,通配符等

參考鏈接&#xff1a; Java中的協變返回類型 在《JAVA核心思想》這本書里&#xff0c;關于泛型的章節意外的很多&#xff0c;小小的泛型里其實有很多可以學習的內容&#xff0c;我總結下最近看書的成果。 一. 泛型的好處和應用 最基礎的用到泛型的地方無非是在容器里 使用…

ASP.NET Session 詳解

[ASP.NET] Session 詳解 開發者在線 Builder.com.cn 更新時間:2008-03-23作者&#xff1a;黑暗凝聚力量&#xff0c;墮落方能自由 來源:CSDN 本文關鍵詞&#xff1a; Web開發 ASP session 詳解 本文僅代表作者個人觀點&#xff0c;正確與否請讀者自行研究&#xff01;閱讀本文…

[轉載] java給對象中的包裝類設置默認值

參考鏈接&#xff1a; Java中的對象類Object 處理方法如下 主要適用于&#xff0c;對象中使用了包裝類&#xff0c;但是不能給null需要有默認值的情況 /** * 處理對象中包裝類&#xff0c;因為快捷簽沒有用包裝類 * * param object 對象 */ public static void handlePara…

hadoop namenode管理元數據機制

一、簡要namenode管理元數據機制&#xff1a; 二、詳細namenode管理元數據機制&#xff1a; 三、secondary namenode 合并edits和fsimage&#xff1a; 四、namenode存儲元數據細節&#xff1a; 五、checkpoint觸發點&#xff1a; 本文轉自lzf0530377451CTO博客&#xff0c;原文…

[轉載] 多線程詳解java.util.concurrent

參考鏈接&#xff1a; java.lang.Object的靈活性 一、多線程 1、操作系統有兩個容易混淆的概念&#xff0c;進程和線程。 進程&#xff1a;一個計算機程序的運行實例&#xff0c;包含了需要執行的指令&#xff1b;有自己的獨立地址空間&#xff0c;包含程序內容和數據&#…

BABOK - 企業分析(Enterprise Analysis)概要

描述 企業分析描述我們如何捕捉、提煉并明晰業務需要&#xff0c;并定義一個可能實現這些業務需要的一個方案范圍&#xff0c;它包括問題定義和分析&#xff0c;業務案例開發&#xff0c;可行性研究和方案范圍定義 目的 明確業務戰略需要和目標&#xff0c;并建議方案范圍 任務…

6、EIGRP配置實驗之負載均衡

1、實驗拓撲 2、負載均衡原理 等價負載均衡&#xff1a;默認情況下EIGRP只支持等價負載均衡&#xff0c;默認支持4條線路的等價負載均衡&#xff0c;可以通過show ip protocols 查看&#xff0c;最大可以支持16條線路的等價負載均衡&#xff0c;可以在EIGRP路由進程下通過maxim…

[轉載] 詳解Java中靜態方法

參考鏈接&#xff1a; Java中的靜態類 定義&#xff1a; 在類中使用static修飾的靜態方法會隨著類的定義而被分配和裝載入內存中&#xff1b;而非靜態方法屬于對象的具體實例&#xff0c;只有在類的對象創建時在對象的內存中才有這個方法的代碼段。 注意&#xff1a; 非靜態…

[轉載] 向集合中添加自定義類型--建議在自定義類型的時候要重寫equals方法

參考鏈接&#xff1a; Java重寫equals方法 package com.bjpowernode.t01list; import java.util.ArrayList; /* * 向集合中添加自定義類型 */public class TestList04 { public static void main(String[] args) { ArrayList list new ArrayList(); Student s1 new Stude…

[轉載] java重寫toString()方法

參考鏈接&#xff1a; 在Java中重寫toString() 前言&#xff1a; 在你興高采烈的寫完一個類&#xff0c;創建測試類時&#xff0c;創建對象&#xff0c;傳入參數&#xff0c;調用對象&#xff0c;以為會得到參數值&#xff0c;但突然發現輸出的是“ 類名什么東東&#xff1f;&…

haproxy+keepalived實現負載均衡及高可用

HAProxy是一個使用C語言編寫的自由及開放源代碼軟件&#xff0c;其提供高性能性、負載均衡&#xff0c;以及基于TCP和HTTP的應用程序代理。相較與 Nginx&#xff0c;HAProxy 更專注與反向代理&#xff0c;因此它可以支持更多的選項&#xff0c;更精細的控制&#xff0c;更多的健…

[轉載] Java中變量與常量

參考鏈接&#xff1a; Java中的實例變量隱藏 1、變量的定義&#xff1a;定義變量就是要告訴編譯器這個變量的數據類型&#xff0c;這樣編譯器才知道需要分配多少空間給它&#xff0c;以及它能存放什么樣的數據。在程序運行過程中空間的值是變化的&#xff0c;這個內存空間就成…

Linux-實用快捷鍵操作

博文說明【前言】&#xff1a; 本文將通過個人口吻介紹Linux下一些常用的實用快捷鍵&#xff0c;在目前時間點【2017年6月14號】下&#xff0c;所掌握的技術水平有限&#xff0c;可能會存在不少知識理解不夠深入或全面&#xff0c;望大家指出問題共同交流&#xff0c;在后續工作…

iOS技術博客:App備案指南

&#x1f4dd; 摘要 本文介紹了移動應用程序&#xff08;App&#xff09;備案的重要性和流程。備案是規范App開發和運營的必要手段&#xff0c;有助于保護用戶權益、維護網絡安全和社會秩序。為了幫助開發者更好地了解備案流程&#xff0c;本文提供了一份最新、最全、最詳的備…