Java基础之多态深入解析
生活随笔
收集整理的這篇文章主要介紹了
Java基础之多态深入解析
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Java基礎之多態深入解析
多態的基本概念
- 同一操作作用于不同的對象,可以有不同的解釋,產生不同的執行結果,這就是多態性。簡單的說:就是用基類的引用指向子類的對象。
多態的優點
多態存在的三個必要條件
比如:Parent p = new Child();
1. 當使用多態方式調用方法時,首先檢查父類中是否有該方法,如果沒有,則編譯錯誤;如果有,再去調用子類的同名方法。
2. 多態是運行時行為
3. 多態的好處:
- 可以使程序有良好的擴展,并可以對所有類的對象進行通用處理。
以下是一個多態實例的演示,詳細說明請看注釋:
public class Test {public static void main(String[] args) {show(new Cat()); // 以 Cat 對象調用 show 方法System.out.println("==========");show(new Dog()); // 以 Dog 對象調用 show 方法System.out.println("==========");Animal a = new Cat(); // 向上轉型a.eat(); // 調用的是 Cat 的 eatCat c = (Cat)a; // 向下轉型c.work(); // 調用的是 Cat 的 work}public static void show(Animal a) { // 首先檢查父類中是否有該方法,如果沒有,則編譯錯誤; // 如果有,再去調用子類的同名方法。a.eat();// 類型判斷if (a instanceof Cat) { // 貓做的事情Cat c = (Cat)a;c.work();} else if (a instanceof Dog) { // 狗做的事情Dog c = (Dog)a;c.work();}} }abstract class Animal {abstract void eat(); }class Cat extends Animal {public void eat() {System.out.println("吃魚");}public void work() {System.out.println("抓老鼠");} }class Dog extends Animal {public void eat() {System.out.println("吃骨頭");}public void work() {System.out.println("看家");} }編譯結果:
吃魚 抓老鼠 ========== 吃骨頭 看家 ========== 吃魚 抓老鼠多態的實現方式
重寫:
重寫是子類對父類的允許訪問的方法的實現過程進行重新編寫, 返回值和形參都不能改變。
具體參見 Java之詳解重寫與重載
接口:
在JAVA編程語言中是一個抽象類型,是抽象方法的集合,接口通常以interface來聲明。
一個類通過繼承接口的方式,從而來繼承接口的抽象方法。
抽象類和抽象方法:
在面向對象的概念中,所有的對象都是通過類來描繪的,但是反過來,并不是所有的類都是用來描繪對象的,如果一個類中沒有包含足夠的信息來描繪一個具體的對象,這樣的類就是抽象類。
總結
以上是生活随笔為你收集整理的Java基础之多态深入解析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java基础之重写与重载深入解析
- 下一篇: Java基础之代码执行顺序深入解析