最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java實例講解多態(tài)數組的使用

 更新時間:2022年05月19日 09:17:47   作者:Demo龍  
本文章向大家介紹Java多態(tài)數組,主要包括Java多態(tài)數組使用實例、基本知識點總結和需要注意事項,具有一定的參考價值,需要的朋友可以參考一下

多態(tài)概述

多態(tài)概念:所謂多態(tài)就是指程序中定義的引用變量所指向的具體類型和通過該引用變量發(fā)出的方法調用在編程時并不確定,而是在程序運行期間才確定,即一個引用變量到底會指向哪個類的實例對象,該引用變量發(fā)出的方法調用到底是哪個類中實現的方法,必須在由程序運行期間才能決定。因為在程序運行時才確定具體的類,這樣,不用修改源程序代碼,就可以讓引用變量綁定到各種不同的類實現上,從而導致該引用變量調用的具體方法隨之改變,即不修改程序代碼就可以改變程序運行時所綁定的具體代碼,讓程序可以選擇多個運行狀態(tài),這就是多態(tài)性。

多態(tài)存在的三個必要條件

1.要有繼承關系的存在(實現接口也是一種繼承關系)

2.要有方法的重寫

3.要有父類引用指向子類對象

注:

1. 運行方法看運行類型,屬性看編譯類型

2.在方法中調用屬性,無特殊情況為本類屬性

3.若類型中沒有調用的方法,遵循向上查詢

1.向上轉型

1.對象的向上轉型,其實就是多態(tài)寫法:

  格式: 父類名稱 對象名 = new  子類名稱();

  含義:右側創(chuàng)建了一個子類對象,把它當作父類來看待使用。

Person person=new student();

          創(chuàng)建了一個學生對象,當作人看待,沒有問題。
          此時的編譯類型為person,運行類型為學生;

注意事項:向上轉型一定是安全的。從小范圍轉向了大范圍,從小范圍的貓,向上轉換成為更大范圍的動物

2.向下轉型

2.對象的向下轉型,其實就是一個還原的動作:

   格式: 子類名稱 對象名 =(子類名稱) 父類對象;

   含義:將子類還原,還原成為本來的子類對象

Cat cat =(Cat) animal;//本來是貓,向上轉型成為動物,還原回來成為本來的貓 注意事項:

   a.必須保證對象本來創(chuàng)建的時候就是貓,才能向下轉型成為貓

   b.如果對象創(chuàng)建的時候不是貓,現在非要向下轉型成為貓,就會報錯

多態(tài)數組

建立一個polyArr包

Arrtest.java

package com.polyArr;
public class Arrtest {
    public static void main(String[] args) {
        //父類的引用可以指向子類的對象
        Person []p=new Person[5];
        p[0]=new Person("aaa",15);
        p[1]=new Student("asas",16, 55);
        p[2]=new Student("ccc",17, 66);
        p[3]=new Teacher("nnn",18, 2000);
        p[4]=new Teacher("mmm",19, 6666);
        for(int i=0;i< p.length;i++)
        {
            //動態(tài)綁定機制
            //person[i]編譯類型是Person,運行類型是根據實際情況判斷的
            System.out.println(p[i].say());
        }
    }
}

Person.java

package com.polyArr;
public class Person {
    private String name;
    private int age;
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    public String say(){
        return "name="+name+" age="+age;
    }
}

Student.java

package com.polyArr;
public class Student extends Person{
    private double score;

    public Student(String name, int age, double score) {
        super(name, age);
        this.score = score;
    }
    public double getScore() {
        return score;
    }
    public void setScore(double score) {
        this.score = score;
    }
    public String say(){
        return super.say()+" score="+score;
    }
}

Teacher.java

package com.polyArr;
public class Teacher extends Person {
    private int salary;
    public Teacher(String name, int age, int salary) {
        super(name, age);
        this.salary = salary;
    }
    public int getSalary() {
        return salary;
    }
    public void setSalary(int salary) {
        this.salary = salary;
    }
    public String say(){
        return super.say()+" salary="+salary;
    }
}

運行結果

多態(tài)數組+向下轉型

instanceof關鍵字

運算符是用來在運行時指出對象是否是特定類的一個實例。instanceof通過返回一個布爾值來指出,這個對象是否是這個特定類或者是它的子類的一個實例。

用法: result = object instanceof class

result為boolean類型

參數:

Result:布爾類型。

Object:必選項。任意對象表達式。

Class:必選項。任意已定義的對象類。

說明:

如果 object 是 class 的一個實例,則 instanceof 運算符返回 true。如果 object

不是指定類的一個實例,或者 object 是 null,則返回 false。

但是instanceof在Java的編譯狀態(tài)和運行狀態(tài)是有區(qū)別的;

注:

在編譯狀態(tài)中,class可以是object對象的父類,自身類,子類。在這三種情況下Java編譯時不會報錯。

在運行轉態(tài)中,class可以是object對象的父類,自身類,不能是子類。在前兩種情況下result的結果為true,最后一種為false。但是class為子類時編譯不會報錯。運行結果為false。

建立一個polyArr包

Arrtest.java

package com.polyArr;
public class Arrtest {
    public static void main(String[] args) {
        //父類的引用可以指向子類的對象
        Person []p=new Person[5];
        p[0]=new Person("aaa",15);
        p[1]=new Student("asas",16, 55);
        p[2]=new Student("ccc",17, 66);
        p[3]=new Teacher("nnn",18, 2000);
        p[4]=new Teacher("mmm",19, 6666);
        for(int i=0;i< p.length;i++)
        {
            //動態(tài)綁定機制
            //person[i]編譯類型是Person,運行類型是根據實際情況判斷的
            System.out.println(p[i].say());
            if(p[i] instanceof Student)
            {
                Student t1=(Student) p[i];
                System.out.println(t1.learn());
            }
            else if(p[i] instanceof Teacher)
            {
                Teacher t1=(Teacher) p[i];
                System.out.println(t1.teach());
            }
        }
    }
}

Person.java

package com.polyArr;
public class Person {
    private String name;
    private int age;
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    public String say(){
        return "name="+name+" age="+age;
    }
}

Student.java

package com.polyArr;
public class Student extends Person{
    private double score;
    public Student(String name, int age, double score) {
        super(name, age);
        this.score = score;
    }
    public double getScore() {
        return score;
    }
    public void setScore(double score) {
        this.score = score;
    }
    public String say(){
        return super.say()+" score="+score;
    }
	public String learn(){
        return getName()+"正在聽講";
    }
 }

Teacher.java

package com.polyArr;
public class Teacher extends Person {
    private int salary;
    public Teacher(String name, int age, int salary) {
        super(name, age);
        this.salary = salary;
    }
    public int getSalary() {
        return salary;
    }
    public void setSalary(int salary) {
        this.salary = salary;
    }
    public String say(){
        return super.say()+" salary="+salary;
    }
    public String teach(){
        return getName()+"正在上課";
    }
}

運行結果

到此這篇關于Java實例講解多態(tài)數組的使用的文章就介紹到這了,更多相關Java多態(tài)數組內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • ServletContext讀取web資源_動力節(jié)點Java學院整理

    ServletContext讀取web資源_動力節(jié)點Java學院整理

    這篇文章主要介紹了ServletContext讀取web資源,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-07-07
  • MySQL中關鍵字UNION和UNION ALL的區(qū)別

    MySQL中關鍵字UNION和UNION ALL的區(qū)別

    本文主要介紹了MySQL中關鍵字UNION和UNION ALL的區(qū)別,深入探討UNION和UNION ALL的定義、用法、主要區(qū)別,具有一定的參考價值,感興趣的可以了解一下
    2024-06-06
  • SpringCloud微服務中跨域配置的方法詳解

    SpringCloud微服務中跨域配置的方法詳解

    在使用SpringCloud實現微服務時,經常會碰到前端頁面訪問多個二級域名的情況,跨域是首先要解決的問題。解決這個問題,可以從兩方面入手,一種方案是在微服務各自的業(yè)務模塊中實現,即在SpringBoot層實現,另外一種方案就是在Gateway層實現
    2023-02-02
  • Java 8中Stream API的這些奇技淫巧!你Get了嗎?

    Java 8中Stream API的這些奇技淫巧!你Get了嗎?

    這篇文章主要介紹了Java 8中Stream API的這些奇技淫巧!你Get了嗎?文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-08-08
  • springboot多模塊中的共用配置文件詳解

    springboot多模塊中的共用配置文件詳解

    這篇文章主要介紹了springboot多模塊中的共用配置文件詳解,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • springboot中redis的緩存穿透問題實現

    springboot中redis的緩存穿透問題實現

    這篇文章主要介紹了springboot中redis的緩存穿透問題實現,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-02-02
  • HashMap原理及手寫實現部分區(qū)塊鏈特征

    HashMap原理及手寫實現部分區(qū)塊鏈特征

    這篇文章主要為大家介紹了HashMap原理及手寫實現部分區(qū)塊鏈特征,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-09-09
  • 從零開始Java實現Parser?Combinator

    從零開始Java實現Parser?Combinator

    這篇文章主要為大家介紹了從零開始Java實現Parser?Combinator過程及原理詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-05-05
  • Java IO流之字符流的使用詳解

    Java IO流之字符流的使用詳解

    這篇文章主要圍繞Java中的字符流進行介紹,包括字符輸入流、字符輸出流以及處理流異常的幾種方式。文中的示例代碼講解詳細,感興趣的可以了解一下
    2022-08-08
  • Java字符串常量池示例詳解

    Java字符串常量池示例詳解

    作為最基礎的引用數據類型,Java設計者為 String 提供了字符串常量池以提高其性能,下面這篇文章主要給大家介紹了關于Java字符串常量池的相關資料,需要的朋友可以參考下
    2021-08-08

最新評論

团风县| 翁牛特旗| 长沙市| 赣州市| 周宁县| 马山县| 桐柏县| 永清县| 沾益县| 武汉市| 开原市| 新巴尔虎右旗| 平山县| 广安市| 军事| 莱州市| 平塘县| 杂多县| 兰西县| 县级市| 普兰店市| 仁怀市| 特克斯县| 惠水县| 陇南市| 铁岭县| 四平市| 温宿县| 赤峰市| 灵寿县| 尼勒克县| 广丰县| 凤翔县| 中卫市| 承德市| 新乡县| 静安区| 琼结县| 南宫市| 大厂| 南安市|