java中關於對象轉型的解釋,Java上轉型對象

本文目錄一覽:

在java中,什麼是對象類型的轉換,

一般就是繼承關係的父類和子類,進行對象類型的轉換,我們知道子類繼承父類,說明子類有了父類的大多數方法,同時子類也可以有自己的方法,如果我們些

A

a

=

new

B();其中B是A的子類,那麼這樣寫沒有錯。反過來寫就有錯,因為父類沒有子類的一部分方法(可以這麼理解)。至於有什麼用,這個問題很深奧啊,這個和編程思想有關係,這種寫法比較好。一般用父類new子類,可以理解為比如一個鳥的類型,下面有許多子類,我們不用關心new的是什麼鳥,因為他們都有相同的父類方法只是實現的時候不一樣。可以看看java編程思想,多理解一下,具體我也說不清楚

關於java上轉型對象

classHuman{

publicvoiddrink(){System.out.println(“Human”);}

}

classYongManextendsHuman{

publicvoiddrink(){System.out.println(“YongMan”);}}

}

publicclassTest{

publicstaticvoidmain(Stringarge[]){

Humane2=newYongMan();

e2.drink();

}

}

以上面這個程序為例子

Humane2=newYongMan();

這句其實是指父類對象e2是子類YongMan對象的上轉型對象

上轉型對象不能操作子類新增的成員變量(失掉了這部分屬性);不能使用子類新增的方法(失掉了一些功能)。

上轉型對象可以操作子類繼承或者隱藏的成員變量,也可以使用子類繼承的或者重寫的方法。上轉型對象操作子類繼承或重寫的方法,其作用等價於子類對象去調用這些方法。因此,如果子類重寫了父類的某個方法,則當對象的上轉型對象調用這個方法時一定是調用了這個重寫的方法

上面的YongMan類中的drink()方法重寫了父類的方法

所以最後的輸出結果是YongMan

自學JAVA,關於對象轉型

先不談對象,拿基本數據類型來說,int a; 這樣就聲明了一個int類型的變量,但這個變量還沒有值,a = 1; 這就是幫a賦值為1. 而對象也是如此Person p; 是聲明了一個Person類型的變量,名字叫p,也就是開闢了一塊內存叫p,然後p = new Person(); 就是實例化一個Person對象,在內存中開闢一塊空間存放Person對象,讓p來指向這塊內存,就用通過p來調用這個對象了。

對象用不同的類聲明或實例化,Person p;是在內存中聲明一個Person類型變量,它只能指向Person類型的實例,不然就會報錯,Dod d;是在內存中聲明一個Dog類型變量,它只能指向Dog類型的實例,new Person();就是在內存中開闢一塊空間存放一個Person實例,p = new Person();就是在內存中開闢一塊空間存放一個Person實例讓p類指向它,所以你不能用Dog d = new Person();類型不對,只能Dog d = new Dog(); 什麼類型的引用才能執行什麼類型的指針,如果Dog繼承了Animal,像Animal a = new Dog();也是可以的 因為Dog就是一種Animal。什麼類型的引用只能調用對應類型的屬性和方法。p只能調用Person裏面的屬性和方法,d只能調用Dog裏面的屬性和方法,a只能調用Animal裏面的屬性和方法,雖然是new的Dog對象,但是你是把它當做Animal看的。Animal a = new Dog();這種寫法很常見,多態機制你可能還沒學 後面你就明白了

Java中對象的上轉型對象的定義

class Human{

public void drink(){System.out.println(“Human”);}

}

class YongMan extends Human{

public void drink(){System.out.println(“YongMan”);}}

}

public class Test{

public static void main(String arge[]){

Human e2=new YongMan();

e2.drink();

}

}

以上面這個程序為例子

Human e2=new YongMan();

這句其實是指父類對象e2是子類YongMan對象的上轉型對象

上轉型對象不能操作子類新增的成員變量(失掉了這部分屬性);不能使用子類新增的方法(失掉了一些功能)。

上轉型對象可以操作子類繼承或者隱藏的成員變量,也可以使用子類繼承的或者重寫的方法。上轉型對象操作子類繼承或重寫的方法,其作用等價於子類對象去調用這些方法。因此,如果子類重寫了父類的某個方法,則當對象的上轉型對象調用這個方法時一定是調用了這個重寫的方法

上面的YongMan 類中的drink()方法 重寫了父類的方法

所以最後的輸出結果是YongMan

java中向上轉型和向下轉型什麼意思?是用來幹什麼的?請高手解釋下,通俗點,謝謝!

我們在現實中常常這樣說:這個人會唱歌。在這裡,我們並不關心這個人是黑人還是白人,是成人還是小孩,也就是說我們更傾向於使用抽象概念「人」。再例如,麻雀是鳥類的一種(鳥類的子類),而鳥類則是動物中的一種(動物的子類)。我們現實中也經常這樣說:麻雀是鳥。這兩種說法實際上就是所謂的向上轉型,通俗地說就是子類轉型成父類。這也符合Java提倡的面向抽象編程思想。

子類轉型成父類是向上轉型,反過來說,父類轉型成子類就是向下轉型。但是,向下轉型可能會帶來一些問題:我們可以說麻雀是鳥,但不能說鳥就是麻雀。

怎麼理解Java的轉型對象

我來提供一個比較靠譜的詳細的解釋,假設,A類是B類的父類,當我們用子類創建一個對象,並把這個對象的引用放到父類的對象中時,比如A a;

A=new B();

A a;

B b=new B();

a=b;

稱這個父類對象 a,是子類對象b的上轉型對象。好比說「老虎是哺乳動物」。對象的上轉型對象的實體是子類負責創建的,但上轉型對象會失去原對象的一些屬性和功能。上轉型對象具有如下特點:

1 上轉型對象不能操作子類新增的成員變量(失掉了這部分屬性),不能使用子類新增的方法(失掉了一些功能)。

2 上轉型對象可以操作子類繼承或重寫的成員變量,也可以使用子類繼承的或重寫的方法。

3 如果子類重寫了父類的某個方法後,當對象的上轉型對象調用這個方法時一定是調用了這個重寫的方法。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/151091.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-11-10 01:12
下一篇 2024-11-10 01:12

相關推薦

  • java client.getacsresponse 編譯報錯解決方法

    java client.getacsresponse 編譯報錯是Java編程過程中常見的錯誤,常見的原因是代碼的語法錯誤、類庫依賴問題和編譯環境的配置問題。下面將從多個方面進行分析…

    編程 2025-04-29
  • Java JsonPath 效率優化指南

    本篇文章將深入探討Java JsonPath的效率問題,並提供一些優化方案。 一、JsonPath 簡介 JsonPath是一個可用於從JSON數據中獲取信息的庫。它提供了一種DS…

    編程 2025-04-29
  • Java Bean加載過程

    Java Bean加載過程涉及到類加載器、反射機制和Java虛擬機的執行過程。在本文中,將從這三個方面詳細闡述Java Bean加載的過程。 一、類加載器 類加載器是Java虛擬機…

    編程 2025-04-29
  • Java騰訊雲音視頻對接

    本文旨在從多個方面詳細闡述Java騰訊雲音視頻對接,提供完整的代碼示例。 一、騰訊雲音視頻介紹 騰訊雲音視頻服務(Cloud Tencent Real-Time Communica…

    編程 2025-04-29
  • Java Milvus SearchParam withoutFields用法介紹

    本文將詳細介紹Java Milvus SearchParam withoutFields的相關知識和用法。 一、什麼是Java Milvus SearchParam without…

    編程 2025-04-29
  • Java 8中某一周的周一

    Java 8是Java語言中的一個版本,於2014年3月18日發佈。本文將從多個方面對Java 8中某一周的周一進行詳細的闡述。 一、數組處理 Java 8新特性之一是Stream…

    編程 2025-04-29
  • Java判斷字符串是否存在多個

    本文將從以下幾個方面詳細闡述如何使用Java判斷一個字符串中是否存在多個指定字符: 一、字符串遍歷 字符串是Java編程中非常重要的一種數據類型。要判斷字符串中是否存在多個指定字符…

    編程 2025-04-29
  • VSCode為什麼無法運行Java

    解答:VSCode無法運行Java是因為默認情況下,VSCode並沒有集成Java運行環境,需要手動添加Java運行環境或安裝相關插件才能實現Java代碼的編寫、調試和運行。 一、…

    編程 2025-04-29
  • Java任務下發回滾系統的設計與實現

    本文將介紹一個Java任務下發回滾系統的設計與實現。該系統可以用於執行複雜的任務,包括可回滾的任務,及時恢復任務失敗前的狀態。系統使用Java語言進行開發,可以支持多種類型的任務。…

    編程 2025-04-29
  • Java 8 Group By 會影響排序嗎?

    是的,Java 8中的Group By會對排序產生影響。本文將從多個方面探討Group By對排序的影響。 一、Group By的概述 Group By是SQL中的一種常見操作,它…

    編程 2025-04-29

發表回復

登錄後才能評論