[转载] 一文彻底搞懂父类引用指向子类对象问题

参考链接: 用子类引用子类对象 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.mzph.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 #列出所有的系统服…