強制型別轉換什麼時候用到
一.向下型別轉換(子類轉父類)。
當子類有的方法,父類中沒有的時候,這時候就需要將父類轉換為子類,這樣就可以使用子類裡有父類裡沒有的方法了。
例如:Fruit類裡有grow()方法,Apple類繼承自Fruit類,重寫了Fruit類裡的grow()方法,並且自己增加了一個sing()方法。
這時如果有一個父型別(Fruit)的引用f指向子型別(Apple)的物件(Fruit f = new Apple()),這時的f裡就只有一個grow()方法,並不能使用
sing()這個方法,因為f是Fruit的引用,當使用多型方式呼叫方法時,首先檢查父類中是否有 grow()方法,如果沒有則編譯錯誤;如果有,再去呼叫子類的 grow()方法。
所以如果這時想呼叫sing()方法的話,就得向下強制型別轉化Apple a = (Apple)f。
注意:是誰的引用才能呼叫誰的方法。是Fruit的引用就不能呼叫Apple裡的grow()方法,只有強制轉換成Apple型別的引用才能呼叫grow()方法。
相關推薦
強制型別轉換什麼時候用到
一.向下型別轉換(子類轉父類)。 當子類有的方法,父類中沒有的時候,這時候就需要將父類轉換為子類,這樣就可以使用子類裡有父類裡沒有的方法了。 例如:Fruit類裡有grow()方法,Apple類繼承自Fruit類,重寫了Fruit類裡的grow()方法,並且自己增加了一個s
多用as少用強制型別轉換
在 C# 中存在一個名叫靜態型別檢查的機制,這個機制可以讓編譯器幫助我們把型別不服的用法找出來,從而使得應用程式在執行期間加少一些型別檢查的操作。但是有時候我們還是需要進行執行期型別檢查,比如我們在設計框架時將方法的引數型別定義為 object ,那麼這時我們就有很大的可能需要將 object 型別的引數先轉
Java強制型別轉換,把浮點型轉為整型
public class Basic{ public static void main(String[] args){ double a = 10.0; double b = 3.0; System.out.println("a / b = "
強制型別轉換(C++學習筆記 13)
無論是強制轉換或是自動轉換,都只是為了本次運算的需要而對變數的資料長度進行臨時性轉換,這並不改變該變數的型別。 一、 C語言中強制型別轉換的一般形式為: (資料型別)表示式 例1: 求x與2進行取餘運算。 (int) x % 2 因為取餘運算的運算元必須是整數,如果x是實數
變數計算——強制型別轉換的js面試題
console.log(1+"2"+"2"); console.log(1++"2"+"2"); console.log(1+(+"2")+"2");(原題是上面那個,此處為自己更改) console.log(1+-"2"+"2"); console.log(1<2<3); consol
cast強制型別轉換
以前學習的時候,使用的都是舊式版本的強制型別轉換,就是int(a)/a(int)這種。最近在看effective C++的時候注意到了新的cast強制型別轉換,在這裡整理一下。 一個命名的強制型別轉換具有如下形式: cast-name<type>(express
【Java】Java強制型別轉換
/* * 強制型別轉換: * 如何將取值範圍小的轉換為取值型別大的 * * 將取值範圍小的轉換為取值型別大的會丟失精度。 * */ public class Data_Convert_Manual { public static
pandas 強制型別轉換 df.astype
import pandas as pd from matplotlib import pyplot as plt from datetime import datetime filename='sitka_weather_2014.csv' df=pd.read_csv(filename) p
JavaScript-強制型別轉換
因為沒有學過其他程式語言,因此作為我的第一門程式設計“母語”我在這就不舉其他程式語言的例子了,JavaScript這個動態型別指令碼語言的變數號稱是沒有型別的,那麼我們怎麼轉換他的變數呢?而且還要強行轉換。 JavaScript的變數的確是沒有型別的,就是說你用var宣告變數後,可以隨便給變數賦值,
int型別和byte型別的強制型別轉換
OKevin GitBook:《探尋Java中的設計模式》 Mail:[email protected] 部落格園 首頁 新隨筆 聯絡 訂閱 管理 隨筆 - 130 文章 - 0 評論 - 83
JAVA語法——自動型別轉換和強制型別轉換
package 自動型別轉換和強制型別轉換; public class 自動型別轉換和強制型別轉換 { public static void main(String[] args) { byte b = 127; char c = 'W'; short s = 23561; int
C++ :四種強制型別轉換方式 以及const常量摺疊
遇到的幾個問題: (1)reinterept_cast:Int和float不能轉換 :傳引用 (2)cons_cast:去掉const屬性,在編譯階段 const int num = 12; *c++裡
3.5.3 強制型別轉換
在必要的時候,int型別的值將會自動轉換為double型別。但另一方面,有時也需要將double轉換成int。在Java中,允許進行這種數值之間的型別轉換。當然,有可能會丟失一些資訊。在這種情況下,需要通過強制型別轉換(cast)實現這個操作。強制型別轉換的語法格式是在圓括號中
自動型別轉換與強制型別轉換
java基本資料型別之間存在自動型別轉換與強制型別轉換兩種轉換方法。 型別從低到高:byte->char->short->int->long->float->double,如果
一道int和unsigned char之間強制型別轉換的題目
設有語句: ``` int a=258,b; unsigned char c; b=c=a; ``` 則b的值為___。 (答案:2) (一)int 型別和char型別之間強制型別轉換的規則 ```將int型別變數i的值賦給char型別變數c,會將i的值當作一
C++強制型別轉換(dynamic_cast,static_cast, const_cast, reinterpret_cast)
[toc] C++同時提供了4種新的強制型別轉換形式(通常稱為新風格的或C++風格的強制轉 型):const_cast(expression)、dynamic_cast(expression)、 reinterpret_cast(expression)和 st
Java強制型別轉換
首先我們需要明確一下概念,明確一下什麼叫作強制型別轉換就是以強制的手段把一個數據型別的資料轉換成其他資料型別的資料。 舉個例子,假設我們有個整型資料9,我們要強制把它轉換成浮點型資料,我們知道,如果不考慮取值範圍的話,浮點型資料就是數學裡面的小數,大家覺得轉換以
關於強制型別轉換
思考 #include<stdio.h> int main() { int a[4] = {1, 2, 3, 4}; int *ptr1=(int *)(&a+1); int *ptr2=(int *)((int)a+1);
類的自動轉化和強制型別轉換(C++)
可以將類定義成與基本型別或另一個類相關,使得從一種型別轉換為另一種型別是有意義的。 當一個類的建構函式中,有隻有接受一個引數的建構函式,這個建構函式就能作為轉換函式。 #pragma once #ifndef STONEWT_H_ #define STONEWT
下面中???該如何填寫,才可以正確執行強制型別轉換? int (*monthp)[31]; monthp = (???)malloc(31);
例子:下面中???該如何填寫,才可以正確執行強制型別轉換? int (*monthp)[31]; monthp = (???)malloc(31); 在這裡int (*monthp)[31];是一個套,代表定義一個指向有31個整型數的陣列的指標,我們如果把這個陣列看成