[轉載] 一文徹底搞懂父類引用指向子類對象問題

參考鏈接: 用子類引用子類對象 vs 父類引用

public class Father {

? ? private String name;

? ? private int age;

? ? private int weight;

? ??

? ? public void eat() {

? ? ? ? System.out.println("Father is eating");

? ? }

? ??

? ? private void run() {

? ? ? ? System.out.println("Runing....");

? ? }

? ??

? ? public Father() {

? ? ? ? name = "zhangsan";

? ? ? ? age = 23;

? ? ? ? weight = 60;

? ? }

? ??

? ? public static void main(String[] args) {

? ? ? ? /*

? ? ? ? ?*

? ? ? ? ?*如果子類的構造方法中對繼承來自父類的變量重新賦予新的值的話,那么這樣子調用的將會是子類的變量

? ? ? ? ?*如果子類重新定義了和父類一樣的變量的話那么這樣將會輸出的是父類的變量??

? ? ? ? ?*Father f = new Son();

? ? ? ? ?*f.age f.weight

? ? ? ? ?*/

? ? ? ? Father f = new Son();

? ? ? ? f.eat();

? ? ? ? f.run();

? ? ? ? System.out.println("。。。。。。年齡是:" + f.age + "\t" + f.weight + "\t" + f.name);

? ??????

//? ? ? ? Son s = new Father();這樣子會報錯

? ? }

}

?

class Son extends Father{

?

? ? private int salary;

?

? ? public void eat() {

? ? ? ? System.out.println("Son is eating");

? ? }

? ??

? ? public void sleep() {

? ? ? ? System.out.println("sleep ....");

? ? }

? ??

? ? public Son() {

? ? ? ? name = "lisi";

? ? ? ? age = 3;

? ? ? ? salary = 60;

? ? ? ? weight = 70;

? ? }

?

? ? public int getAge() {

? ? ? ? return age;

? ? }

?

? ? public void setAge(int age) {

? ? ? ? this.age = age;

? ? }

}

?

最終輸出的結果? f.eat()輸出的是子類中重寫父類中的eat()方法?

f.run()輸出的是父類中的run()方法(實際上是輸出的子類中的,只是因為子類中沒有重寫,所以看上去輸出的是父類中的,實際調用的是子類的)?

f.age和f.weigth輸出的是子類的構造方法中重新賦值的?

f.name輸出的是父類中的屬性?

由此可以看出,父類引用指向子類對象,最終這個父類引用所擁有的變量是是子類中的(如果構造方法中沒有重新賦值那就和父類中的一樣,如果重新賦值了那就是子類中賦值以后的),方法也是子類中的(如果重寫了就是重寫之后的方法,如果沒有重寫的那就和父類中的一樣)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/540262.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/540262.shtml
英文地址,請注明出處:http://en.pswp.cn/news/540262.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

把控站外seo效果的幾個操作點

把控站外seo效果的幾個操作點 實際上,站外的seo不僅僅是外鏈這么簡單,還包括用戶行為(點擊),品牌詞曝光等工作。大部分情況下,我們所說的站外優化就是發外鏈。本文就外鏈相關事宜,講解些許操作點…

[轉載] 【C語言】fopen C4996錯誤解決

參考鏈接: C和C#重載可以與繼承一起使用嗎 C4996 fopen: This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. 解決方案:添加宏定…

Quartus II 8.1 詳解--有圖---圖片詳解 【1講】

Quartus II 8.1 詳解--有圖---圖片詳解 看圖片比較清楚,比文章清楚的多 本文轉自 zhangguangyi 51CTO博客,原文鏈接http://blog.51cto.com/bosszhang/808019:

[轉載] JAVA數組實現學生成績統計

參考鏈接: Java程序的輸出 20(繼承) 一、項目名稱 數組實現學生成績統計 二、項目描述 1.項目簡介: 由用戶輸入學生人數與名字,并定義當前學期課程數與課程名,并分別錄入每位學生每門課程成績,系統顯示輸入每位學生每…

建立同步文件的腳本

為避免一個一個的去修改每一個服務器的配置文件,只需要rsync同步一下就可以搞定#!/bin/bash#rsync.shLOCAL_DIR"/opt/admin"test -n "$hosts" || hosts"xxxx xxxx"REMOTE_DIR"/opt/"RSYNC_LOG"/opt/var/log/rsync.log…

[轉載] Java三元運算符示例

參考鏈接: Java中的運算符 本示例說明如何編寫Java三元運算符。 這是語法 condition ? get_this_if_true : get_this_if_false Java三元運算符語法 (n > 18) ? true : false; (n true) ? 1 : 0; (n null) ? n.getValue() : 0; 1. Java三元運算符 …

shell下的進度條和最大最小平均值

進度條 C語言下的進度條參考我原來的一篇blog->進度條 1234567891011121314151617181920212223function proc() {i0 str arr(| / - \\) index0 while [ $i -le 100 ] do printf "[%-101s][%d%%][%c]\r" "$str" "$i" "${arr[$index]}&qu…

[轉載] 你真的會用 Java 中的三目運算符嗎

參考鏈接: Java中的按位運算符 轉載:http://blog.jobbole.com/93511/ 寫在前面: 三目運算符是我們經常在代碼中使用的,a (bnull?0:1); 這樣一行代碼可以代替一個 if-else,可以使代碼變得清爽易讀。但是,三目運算符也…

HTTP Keep-Alive模式

1、什么是Keep-Alive模式? 我們知道HTTP協議采用“請求-應答”模式,當使用普通模式,即非KeepAlive模式時,每個請求/應答客戶和服務器都要新建一個連接,完成 之后立即斷開連接(HTTP協議為無連接的協議&#…

[轉載] java:比較運算符

參考鏈接: Java中的new運算符 1.compareTo()方法: compareTo()方法返回的是一個int類型值. //聲明的值 BigDecimal t_sell1 new BigDecimal(); BigDecimal t_sell2 new BigDecimal(); if(t_sell1.compareTo(t_sell2)0){ return "t_sell1的值等于t_sell2&…

[轉載] java左移右移和無符號右移

參考鏈接&#xff1a; Java中的按位右移運算符 ###知識點 java的三種位移運算符&#xff1a; <<&#xff1a;左移運算符&#xff0c;num << 1,相當于num乘以2 >>&#xff1a;右移運算符&#xff0c;num >> 1,相當于num除以2 >>>&#xff1a…

Script:List OBJECT DEPENDENT

以下腳本用以列出數據庫中對象的依賴性:select D_OBJ#, 本文轉自maclean_007 51CTO博客&#xff0c;原文鏈接: http://blog.51cto.com/maclean/1276767

[轉載] java避免空指針異常_第1部分:在現代Java應用程序中避免空指針異常

參考鏈接&#xff1a; Java的instanceof及其應用 java避免空指針異常 空做與不做 (Null do’s and don’ts) In the talk Null References: The Billion Dollar Mistake, Sir Tony Hoare describes implementing null references as a part of the ALGOL programming languag…

[轉載] 什么是Java中的自動拆裝箱 integer

參考鏈接&#xff1a; Java中autoboxing自動裝箱整數對象的比較 本文主要介紹Java中的自動拆箱與自動裝箱的有關知識。 1、基本數據類型 基本類型&#xff0c;或者叫做內置類型&#xff0c;是Java中不同于類(Class)的特殊類型。它們是我們編程中使用最頻繁的類型。 Jav…

[轉載] python常用庫

參考鏈接&#xff1a; Python–新一代語言 轉載至&#xff1a;https://www.cnblogs.com/jiangchunsheng/p/9275881.html 今天我將介紹20個屬于我常用工具的Python庫&#xff0c;我相信你看完之后也會覺得離不開它們。他們是&#xff1a; Requests.Kenneth Reitz寫的最富盛…

linux下安裝配置oracle

檢查系統是否已安裝所需的開發包 使用rpm -qa命令&#xff0c;確保以下包已成功安裝。對于包的版本,只有版本高于下面的都可以,如果低于此版本,則要升級處理,如下: binutils-2.15.92.0.2-13.EL4 compat-db-4.1.25-9 compat-libstdc-296-2.96-132.7.2 control-center-2.8.0-12 g…

[轉載] c++多態與java多態性_Java中的多態性

參考鏈接&#xff1a; Java中的加法和串聯 c多態與java多態性 Polymorphism is one of the core concepts of OOPS paradigm. The meaning of polymorphism is the condition of occurring in several different forms. 多態是OOPS范式的核心概念之一。 多態性的含義是以幾種不…

USB peripherals can turn against their users

Turning USB peripherals into BadUSB USB devices are connected to – and in many cases even built into – virtually all computers. The interface standard conquered the world over the past two decades thanks to its versatility: Almost any computer peripheral…

[轉載] JAVA條件表達式的陷阱

參考鏈接&#xff1a; Java條件表達式中的數字類型提升 Map<String, Integer> map new HashMap<String, Integer>(); map.put("count", null); Integer it map null ? 0 : map.get("count"); 注意&#xff1a;在第三行&#xff0c;會…

Linux系統管理初步(七)系統服務管理、chkconfig與systemd 編輯中

Linux系統本身包含了很多服務&#xff0c;CentOS6之前系統的服務用SysV控制&#xff0c;CentOS7改為systemd控制 一、chkconfig服務管理機制 簡而言之&#xff0c;chkconfig就是CentOS6以前用來控制系統服務的工具&#xff0c; 常用方法舉例 chkconfig --list #列出所有的系統服…