JAVA知識基礎(十):多態

1.概述

1.1多態的定義
多態是同一個行為具有多個不同表現形式或形態的能力。
多態就是同一個接口,使用不同的實例而執行不同操作。
多態性是對象多種表現形式的體現。
1.2多態的優點

  1. 消除類型之間的耦合關系
  2. 可替換性
  3. 可擴充性
  4. 接口性
  5. 靈活性
  6. 簡化性
    1.3多態存在的三個必要條件
    繼承
    重寫
    父類引用指向子類對象

2.多態的實現方式

方式一:重寫:
這個內容已經在上一章節詳細講過,就不再闡述,詳細可訪問:Java 重寫(Override)與重載(Overload)。
方式二:接口

  1. 生活中的接口最具代表性的就是插座,例如一個三接頭的插頭都能接在三孔插座中,因為這個是每個國家都有各自規定的接口規則,有可能到國外就不行,那是因為國外自己定義的接口類型。
  2. java中的接口類似于生活中的接口,就是一些方法特征的集合,但沒有方法的實現。具體可以看 java接口 這一章節的內容。

方式三:抽象類和抽象方法
https://blog.csdn.net/weixin_45187434/article/details/106320376

3.向上轉型&向下轉型

向上轉型:多態本身是子類類型向父類類型向上轉換的過程,其中,這個過程是默認的。你可以把這個過程理解為基本類型的小類型轉大類型自動轉換,不需要強制轉換。 當父類引用指向一個子類對象時,便是向上轉型。 向上轉型格式:

父類類型 變量名 = new 子類類型(); 如:Father f= new Son();

向下轉型:父類類型向子類類型向下轉換的過程,這個過程是強制的。同樣可以把這個過程理解為基本類型的自動轉換,大類型轉小類型需要強制轉換。一個已經向上轉型的子類對象,將父類引用轉為子類引用,可以使用強制類型轉換的格式,向下轉使用格式:

Father father = new Son();
子類類型 變量名 = (子類類型) 父類變量名; 如:Son s =(Son) father;

4.例題

package Polymorphic;
//爺爺類
class Ye {public String show(Sun obj) {return ("Ye and Sun");}public String show(Ye obj) {return ("Ye and Ye");}}
//爸爸類
class Fu extends Ye {public String show(Fu obj) {return ("Fu and Fu");}public String show(Ye obj) {return ("Fu and Ye");}
}
//兒子類
class Zi extends Fu {}
//孫子類
class Sun extends Fu {}
public class PolymorphicTest {public static void main(String[] args) {Ye y = new Ye();Ye y2 = new Fu(); //向上Fu f = new Fu();Zi z = new Zi();Sun s = new Sun();System.out.println("第一題 " + y.show(f));System.out.println("第二題 " + y.show(z));System.out.println("第三題 " + y.show(s));System.out.println("第四題 " + y2.show(f)); System.out.println("第五題 " + y2.show(z));System.out.println("第六題 " + y2.show(s));System.out.println("第七題 " + f.show(f));System.out.println("第八題 " + f.show(z));System.out.println("第九題 " + f.show(s));}
}

4.例題答案

第一題 Ye and Ye
第二題 Ye and Ye
第三題 Ye and Sun
第四題 Fu and Ye
第五題 Fu and Ye
第六題 Ye and Sun
第七題 Fu and Fu
第八題 Fu and Fu
第九題 Ye and Sun

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

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

相關文章

MIP技術交流分享(3月9日)

3月9日上周四下午,MIP 團隊工程師與去哪兒酒店云、眾薈的 Web 前端工程師進行了一次面對面的技術交流。 在這次交流中,MIP 工程師主要分享了 MIP 技術原理,MIP 加速原理,以及 MIP 為開發者提供的工具集。去哪兒的工程師也提出了通…

JAVA知識基礎(十一):異常

1.異常的概念 簡單說就是不正常運行,最終導致JVM的非正常停止。 在Java等面向對象的編程語言中,異常本身是一個類,產生異常就是創建異常對象并拋出了一個異常對象。Java處理異常的方式是中斷處理。 異常指的并不是語法錯誤,語法錯了,編譯不…

SpringBoot基礎篇(一):Spring Boot入門

我們今天開始對SpringBoot的學習,本篇主要是Spring Boot的入門部分。 1、SpringBoot簡介 引用SpringBoot在百度百科中的含義: Spring Boot是由Pivotal團隊提供的全新框架,其設計目的是用來簡化新Spring應用的初始搭建以及開發過程。該框架使…

SpringBoot基礎篇(二):HelloWorld細節探究

1、場景啟動器 1.1依賴 <!--Hello World項目的父工程是org.springframework.boot--><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.2.1.RELEASE</versio…

MIP 與 AMP 合作進展(3月7日)

“到目前為止&#xff0c;全網通過 MIP 校驗的網頁已超10億。除了代碼和緩存&#xff0c; MIP 還想做更多來改善用戶體驗移動頁面。” 3月7日&#xff0c;MIP 項目負責人在首次 AMP CONF 上發言。 那么 MIP 和 AMP 的關系是什么呢&#xff1f; AMP 是一個開源性項目&#xff…

SpringBoot番外篇(一):使用Spring Initializer快速創建Spring Boot項目(IDEA版)

IDE都支持使用Spring的項目創建向導快速創建一個Spring Boot項目&#xff1b; 選擇我們需要的模塊&#xff1b;向導會聯網創建Spring Boot項目&#xff1b; ps:需要聯網 1、創建新項目時選擇Spring Initializ&#xff0c;選擇好java版本&#xff0c;點擊next。r 2、填寫項…

開發教程(四) MIP組件平臺使用說明

組件審核平臺用于上傳 MIP 組件。經過自動校驗之后&#xff0c;提交審核&#xff0c;通過審核的組件會定時推送到線上&#xff0c;供網站使用。 平臺地址&#xff1a;https://www.mipengine.org/platform/ 1. 使用說明 MIP 組件審核平臺用于提交開發完成的組件&#xff0c;如…

MIP 技術交流分享(3月15日)

3月15日下午&#xff0c;MIP 團隊工程師與58趕集的 Web 前端工程師進行了一次面對面的技術交流。 在這次交流中&#xff0c;MIP 工程師主要分享了 MIP 技術原理&#xff0c;MIP 加速原理&#xff0c;以及 MIP 為開發者提供的工具集。 58趕集的工程師提出了以下問題&#xff1a…

Redis(零):背景

什么是NoSQL&#xff0c;什么是Redis&#xff0c;我們在了解這個系列之前&#xff0c;先來看一下Redis是從何而來&#xff1f;Why redis is needed? 1、單機MySQL年代 在最早的單機MySQL年代&#xff0c;存在著訪問量小&#xff0c;單個數據庫等特點。 但是特有著眾多的缺…

Redis(一):什么是NoSQL與NoSQL分類

1、什么是NoSQL NoSQL Not only SQL (不僅是SQL)&#xff0c;即泛指非關系型數據庫。隨著Web2.0時代誕生&#xff01;NoSQL在當今大數據的環境下發展十分迅速&#xff01; NoSQL 是一項全新的數據庫革命性運動&#xff0c;早期就有人提出&#xff0c;發展至2009年趨勢越發高漲…

MIP 內容聲明

從搜索結果頁點出的 MIP 頁面&#xff0c;其頁面上的任何內容&#xff08;包括但不限于廣告、在線咨詢、統計等組件&#xff09;均視為在原站點上的投放和使用。 MIP &#xff08;Mobile Instant Pages - 移動網頁加速器&#xff09;, 是一套應用于移動網頁的開放性技術標準。…

Redis(二):Redis入門與性能測試

1、Redis概述 Redis是什么&#xff1a; Redis&#xff08;Remote Dictionary Server )&#xff0c;即遠程字典服務&#xff0c;是一個開源的使用ANSI C語言編寫、支持網絡、可基于內存亦可持久化的日志型、Key-Value數據庫&#xff0c;并提供多種語言的API。 免費開源&#xf…

互聯網的發展背離了其初衷嗎?

作者 | 高磊 編輯 | 尾尾 一、互聯網初衷究竟是什么&#xff1f; 互聯網的初衷究竟是什么&#xff1f; 對于這個問題&#xff0c;被譽為“互聯網之父”的蒂姆伯納斯李&#xff08;Tim Berners-Lee&#xff09;應該最有發言權。 伯納斯李認為&#xff0c;互聯網最具價值的地…

Redis(三):Redis基礎知識與常用命令

1、基礎命令 Redis默認有16個數據庫&#xff0c;用的是第0個數據庫&#xff0c;可以使用select進行切換數據庫&#xff0c;使用DBSIZE查看DB大小&#xff08;只針對當前數據庫&#xff09;。 使用keys * 查看當前數據庫下所有的key&#xff0c;使用flushdb清除當前數據庫&am…

移動Web加速技術月報第1期

作者 | Brilliant Open Web團隊breezet、JennyL 編輯 | 尾尾 為推進Web技術的發展&#xff0c;Brilliant Open Web 團隊特推出每月一期的《移動Web加速技術月報》&#xff0c;該月報將整理較流行的移動Web加速技術&#xff0c;并跟進各項技術的進展和發展方向&#xff0c;以期…

Redis(四):String字符串數據類型詳解

Redis 字符串數據類型的相關命令用于管理 redis 字符串值&#xff0c;基本語法如下&#xff1a; redis 127.0.0.1:6379> COMMAND KEY_NAME1、String類型的常用命令 1.1、set、get SET key v//設置key值為v get key //獲取key值1.2、Append APPEND key "hi" //…

五個案例簡述Web設計原則:通用一致

作者 | 百度搜索用戶體驗中心 《Web設計指南》分為設計原則、基礎規范兩方面主要內容&#xff0c;同時會提供相應的實際案例及資源下載。歡迎關注OpenWeb開發者&#xff0c;訂閱《Web設計指南》。 前言 《Web設計指南》是專門為廣大Web內容生態提供一套簡單實用的設計指南&a…

Redis(五):List集合數據類型詳解

Redis列表是簡單的字符串列表&#xff0c;按照插入順序排序。你可以添加一個元素到列表的頭部&#xff08;左邊&#xff09;或者尾部&#xff08;右邊&#xff09; 一個列表最多可以包含 232 - 1 個元素 (4294967295, 每個列表超過40億個元素)。 實例&#xff1a; redis 127…

WebP 在減少圖片體積和流量上的效果如何?WebP 技術實踐分享

作者 | Jackson 編輯 | 尾尾 不論是 PC 還是移動端&#xff0c;圖片一直占據著頁面流量的大頭&#xff0c;在圖片的大小和質量之間如何權衡&#xff0c;成為了長期困擾開發者們的問題。而 WebP技術的出現&#xff0c;為解決該問題提供了好的方案。本文將為大家詳細介紹 WebP 技…

Redis(六):Set集合數據類型詳解

Redis 的 Set 是 String 類型的無序集合。集合成員是唯一的&#xff0c;這就意味著集合中不能出現重復的數據。 Redis 中集合是通過哈希表實現的&#xff0c;所以添加&#xff0c;刪除&#xff0c;查找的復雜度都是 O(1)。 集合中最大的成員數為 232 - 1 (4294967295, 每個集…