1. 程式人生 > >Java繼承時,父類中的this指向子類物件

Java繼承時,父類中的this指向子類物件

程式碼如下

父類

public class Car {


public void fool() {
System.out.println("Car:fool1");
}


public void foo2() {
this.fool();
System.out.println("Car:fool2");
}


}

子類



public class RedCar extends Car {


@Override
public void fool() {
// TODO Auto-generated method stub
System.out.println("RedCar:fool1");
}


@Override
public void foo2() {
// TODO Auto-generated method stub
System.out.println("RedCar:fool2");
super.foo2();
}
}

測試類



public class Test {


public static void main(String[] args) {
// TODO Auto-generated method stub
RedCar redCar = new RedCar();
redCar.foo2();


}


}

輸出結果。

RedCar:fool2
RedCar:fool1
Car:fool2

原因分析:

 繼承時,對於方法覆蓋時,new的誰,this,就指向誰,多型性決定,,如果是成員變數,this,在哪個類就指向哪個類的成員變數,成員變數沒有多型性 

相關推薦

Java繼承this指向物件

程式碼如下 父類 public class Car {public void fool() {System.out.println("Car:fool1");}public void foo2() {this.fool();System.out.println("Car:f

指針指向內存為什麽當的成員函數不加virtual訪問的還是的成員函數而不是類同名的成員函數

https 執行 子類 對象 類名 tail detail com 成員函數 我認為是這樣,類的成員函數都在代碼區,不同的類的成員函數在代碼區有自己的類名稱空間限制,類的虛函數在虛函數表中,程序執行的時候,是先在虛函數表中找該成員函數,如果沒有找到,就去該類在代碼區的成員函

Java--的引用指向的對象詳解!

show 小明 一個 oid void get color system eight 例:   第一步.創建一個Person類 package com.maya.ball; public class Person { private int age; p

與派生指針指向對象

namespace 簡單工廠模式 為什麽 對象創建 簡單工廠 pos 釋放 自己的 分享 先看一段代碼: 1 #include<iostream> 2 3 using namespace std; 4 5 class Base{ 6 publi

為什麼指標可以指向指標不能指向

class Base { public: int aa }; class Child :public Base { public: int bb; } 通過記憶體來檢視資料: Base是: ---------| |佔一個int資料大小--| |----(aa 資料)----

axios跨域及axiosthis指向

安裝  npm install axios --save-dev  axios 不能直接在 main.js 中引入並 Vue.use(),只能每個需要傳送請求的元件中即時引入。 兩種解決思路:一 修改原型鏈,二 axios+vuex 進行封裝 一.  main.js 中

java基礎 靜態 static 問在多態靜態方法覆蓋靜態方法引用調用的是哪個方法?

xtend java pos main 靜態方法 show extends ava pri 多態 package com.swift.jiekou; public class Jicheng_Tuotai_jingtai_diaoyong { publ

java this 調再調用已覆蓋的方法及屬性(又一次理解)

views args pop word per ews nds 如果 ext 之前一直以為 this關鍵字 是指調用者對象,但是這次才真正理解,this代表當前對象,但是指向調用者對象,其實就是多態的用法,如下所示:B 繼承了 A,在B 中調用A類的方法,在A 中用this

當Json數據的key為Java關鍵字在定義實體的時候不能對該字段進行聲明所以需要對字段進行特殊處理

數據 prop str abstract prope 需要 jackson string 解析 使用Gson解析 在與Java關鍵字沖突的字段加上@SerializedName註解 @SerializedName("abstract") private Strin

java創建一個對象內存發生了什麽

就是 抽象方法 abstract getx 對象共享 鼓勵 事情 指定 更多 JAVA是一種面向對象的語言,它本身具有面向對象的三大特性--封裝,繼承,多態。開發時,我們要記住,屬性是用於存儲數據的。直接被訪問,容易出現安全隱患。所以,類中的屬性通常被私有化,並對外提供公共

多態引用指向對象如何調用的獨有方法?

引用 父類引用 post 父類 多態 pos int ins blog 父類:A 子類:Person A a1 = new Person(); if(a1 instanceof Person) { System.out.println("true");

【eclipse jar包】在編寫java程式碼為方便程式設計常常會引用別人已經實現的方法通常會封裝成jar包我們在編寫只需引入到Eclipse即可。

Eclipse中匯入外部jar包 在編寫java程式碼時,為方便程式設計,常常會引用別人已經實現的方法,通常會封裝成jar包,我們在編寫時,只需引入到Eclipse中即可。 工具/原料 Eclipse

java 迴圈使用list出現list全部加入了物件導致沒有實現分組的解決方案

  清空list即可 public List fetchNmapSingleTaskWithDataList() { Map map = new HashMap<>(); List listNst = new ArrayList();

Java在建立物件時有沒有建立物件

我覺得在建立子類物件時,建立了父類物件,因為在new Student();時呼叫了Student的建構函式,而在子類的建構函式中,Student建構函式呼叫了父類的建構函式,這不就是建立物件嗎? class Person{ Person(){ } } class S

啟動Java程式動態設定SpringBoot配置檔案的配置

比如: springboot配置檔案中有個   spring.redis.host=localhost選項 但是這個配置可能會修改,比如指定到其他伺服器上的redis.那我們需要修改配置檔案嗎?、 答案是NO 我們可以在啟動SPringBoot程式的時候動態指定這

Java筆記:[反射篇] 利用反射獲取的私有內部類物件並呼叫該物件的方法

public void smoothScrollBy(int dx, int dy, int duration) { try { Class<?> c = null; try { c = Class

this的含義

父類中this指代的是那個物件? 最近打算把《第一行程式碼》這本書再看看,之前都是隨用隨學,有些東西並沒有理解的很好。再看到第二章的時候,看到了如下程式碼: public class BaseActivity extends AppCompatActivit

容器div內的元素div為float元素無法撐開(或高度自適應)的解決方式以及cssposition和float的介紹

先簡單給出父元素無法高度自適應時的解決方案:       第一種:在父容器上設定 overflow:auto或者hidden可以讓它自動包含子元素,從而具有了實際的height值。       第二種:在子元素的最下面加上一個 空元素,並且設定clear:both,但

載入做了什麼?

在做android或者java開發時,我們很少考慮到類載入的事情,因為這些事情,虛擬機器都幫我們做了。 可是,你有沒有想過,當我們new了一個子類的時候,父類是個什麼情況? 我們先說一下載入類時機。“類的程式碼在初次使用時才載入”,一般就是在我們new例項、使用靜態域或者使

Android自定義介面卡繼承BaseAdapter自定義生成對話方塊工具

工作內容: 1.不使用SQLiteHelper獲取本地資料庫中的表的內容 2.自定義介面卡父類 3.自定義生成對話方塊的工具類 學習分享: 1.不使用SQLiteHelper,直接找到本地資料庫檔案開啟,並獲取其中的表內容 SQLiteDatabase  sqliteDat