【java】父类与子类的引用赋值关系

理清楚4个目标

  1. 父类引用(“名”)
  2. 父类对象(“实”)
  3. 子类引用
  4. 子类对象
    在这里插入图片描述

理清楚几个操作

// 父类
public class parent{}// 子类
public class sun{}
  1. 父类引用指向父类对象
parent p1 = new parent();
  1. 子类引用指向子类对象
son s1 = new son();

在这里插入图片描述
3. 父类引用指向子类对象

parent p2 = new son();
  1. 子类引用指向父类对象(错误!
son s2 = new parent();

在这里插入图片描述
5. 将第3点强制转换为由子类引用指向该子类对象

son s3 = (son)p2;

在这里插入图片描述
6. 对于强制类型转换,转换结果不能是【子类引用指向父类】,这显然是错误的,java会进行强制类型转换检查。例如

parent p4 = new parent();
son s4 = (son)p4; // 错误!

在这里插入图片描述

弄明白几个操作

对于父类引用指向子类对象的情况,此时,父类引用只能操作父类的部分。

也就是说

能操作什么,取决于引用的类型,当然,与修饰限定符有关,只能操作publicprotected修饰符的东西

这也可以印证,为什么子类引用不能指向父类对象,因为,父类对象没有子类的方法,而子类引用又可以操作子类方法,就会造成错误。

父类引用子类对象的时候,只能使用父类的共有或者保护方法
在这里插入图片描述
可以看到,强制转换之后,就相当于子类引用指向了子类对象,也就是正常的情况了。
在这里插入图片描述
错误的做法,子类引用指向父类对象
在这里插入图片描述

对于多次继承,同样遵循父类与子类的关系

可以单独把继承链中的某两个类抽出来,看作父类和子类,然后关系就和上面说的一样了。

小结

整体来说,就说了几件事情
在这里插入图片描述
左边指向右边,有4种情况,其中【子类引用指向父类对象】是不允许的

然后,对于【父类引用指向子类对象】,可以变换为【子类引用转换为父类对象】

还有一些访问权限的事情,与访问修饰符有关。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/384705.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

IDEA自动生成 构造方法 get set方法

对于一个类,创建好成员变量后 右键单击,选中Generate 然后 这几个依次是 构造方法getsetget和set 我们可以选中一个,然后选中要生成的变量,点击OK 这样就可以自动生成 构成方法get方法set方法

IDEA快速修改类名和文件名

在你要修改的类名上,选中类名,然后 右键单击选中Refactor选中Rename 也可以使用快捷键 Win用户是Shift F6

【FPGA VerilogHDL】第一次尝试:LED灯基础实验

0 实验环境 0.1 软件环境 ISE 14.7win10vivado 2017.4 0.2 硬件设备 ISE适用的FPGA开发板:ALINK AX309 1 需求 能够灵活控制4个LED灯 2 Verilog实现 timescale 1ns / 1ps // // Create Date: 14:18:20 08/08/2020 // Module Name: led // Revision…

使用ISE一键生成bit文件

我们知道,这几个,在第一次做好源文件之后,需要一个个进行右键单击-->run,以发现错误。 但是之后的调试,只要一点点变化,哪怕是注释变化,都需要重新run3次,太麻烦了。 不过经过实…

【FPGA Verilog】实验二:key按键基础实验

只说一下经验和教训 1 必须按照设计流程走 不要因为实验简单,就直接进行综合,比如按照 设计编码RTL优化仿真综合管脚分配,实现下载 一定要按照这个步骤来。 2 必须先查看开发板说明文档 开始出了一个令人困惑的问题,后来发现…

【Java】字符串转换为数字:Integer的parseInt方法

Java官方文档[1]的解释 public static int parseInt​(String s) throws NumberFormatException Parses the string argument as a signed decimal integer. The characters in the string must all be decimal digits, except that the first character may be an ASCII minus…

在win10上使用Vmware安装Mac OS

安装macOS 如何在Windows上VMware上安装macOS Catalina 10.15 做一些提示: 如果您在第一次启动mac的时候,在出现【语言选择】之前,出现了连接蓝牙内容。 您可以将教程中【修改为win10 x64】那一步跳过,请注意,如果您…

【Computer Organization】The Core Design Thinking of single cycle CPU

1 Overview This section introduces someting that maybe you need to know before learning. Note:This CPU is based on MIPS instruction set. 1.1 Tools LogisimCS 3410 ComponentsMARS MIPS simulatorWin10 or Mac OS 1.2 Courses 自己动手画CPU《计算机组织与结构实…

【汇编语言】王爽 - 内中断复习

0 前言 基于王爽《汇编语言》和Coursera的《计算机组成》课程。 1 中断分类 CPU在执行指令的过程中,产生了一个异常/中断,因为CPU只能同时执行一条指令,所以需要暂停该指令的执行,转而去处理异常/中断信息。 这个异常可以来…

【算法】蛮力法/穷举法/枚举法 的基本问题分析

炮兵问题的优化,设立逻辑数组 蛮力法设计思想 有策略地穷举 验证 制定穷举策略避免重复 简单来说,就是列举问题所有可能的解,然后去看看是否满足题目要求,是一种逆向解题方式。(我也不知道答案是什么,…

【计算机网络实验·北航】实验一:网络实验入门(1)

1.3 远程在线环境使用 PCA、PCB、PCC和PCD:4台PC机S1、S2:2台交换机R1、R2:2台路由器中间的设备:组网连线器 远程组网连线: 使用PCA上的组网连线软件,配置组网连线器,实现组网连线。 PCA和PCB…

【操作系统】虚拟化CPU、Memory,共享文件

几个概念 CPU、虚拟CPU进程内存、虚拟地址空间 物理的CPU被OS虚拟成了多个虚拟的CPU,这些虚拟CPU分别运行各自的程序,这些正在运行的程序被称为进程。物理内存被OS虚拟成了多个虚拟地址空间,每个进程都有独立的、自己的地址空间,…

【Linux】编译C语言文件(-o -lpthread)

在gcc中使用-o编译 对于一个一般的程序&#xff0c;直接使用gcc <C语言文件名> -o <编译后生成的文件名>即可&#xff0c;例如以下程序&#xff1a; // cpu.c #include <stdio.h> #include <unistd.h> #include <stdlib.h>int main(int argc,…

【Linux】Ubuntu下进行C语言编程

前言 需要您会使用Windows下cd切换目录的基本命令&#xff0c;否则请先自学相关知识&#xff0c;之后再阅读本文。 0 基础命令 介绍最基础的Linux终端命令。 su - root&#xff1a;切换到root用户&#xff08;不用也可以&#xff09;ls&#xff1a;查看当前目录位置cd&…

【Linux】Ubuntu 18下安装Vim自动补全插件YouCompleteMe(可高速下载安装)

前言 本文写于2020年10月&#xff0c;如果你多年后看见这篇文章&#xff0c;方法可能已经失效&#xff0c;但是请牢记&#xff0c;尽量下载你所处时代的最新版本的软件&#xff0c;会减少很多麻烦。 摆正心态 即便按照本文操作&#xff0c;由于你的系统状态和我的不一样&…

【操作系统】进程调度(1):FIFO(先进先出)算法 原理与实践

0 前言 本文基于书籍《Operating System&#xff1a;Three Easy Pieces》。 中译本&#xff1a;《操作系统导论》&#xff0c;中译本质量还可以&#xff0c;但是英文版后来的更新&#xff0c;中文版目前没有进行同步更新&#xff08;写下此文的时间是2020年10月&#xff09; 1…

【操作系统】进程调度(2a):SJF(短任务优先) 算法 原理与实践

0 前言 接上一篇文章&#xff1a;进程调度&#xff08;1&#xff09;&#xff1a;FIFO&#xff08;先进先出&#xff09;算法 原理与实践 1 前提铺垫 请参考上一篇文章的前提铺垫部分&#xff0c;本文与之完全一致。 2 SJF 原理 SJF&#xff08;Shortest Job First&#x…

【操作系统】进程调度(2b):STCF(最短完成时间优先) 算法 原理与实践

0 前言 接上一篇文章&#xff1a;进程调度&#xff08;2a&#xff09;&#xff1a;SJF&#xff08;短任务优先&#xff09; 算法 原理与实践 1 前提铺垫 与上一篇同。 2 STCF 原理 STCF&#xff08;Shortest Time-to-Completion First&#xff09;最短完成时间优先。 2.1…

【操作系统】进程调度(3):RR(轮转) 算法 原理与实践

0 前言 接上一篇文章&#xff1a;进程调度&#xff08;2b&#xff09;&#xff1a;STCF&#xff08;最短完成时间优先&#xff09; 算法 原理与实践 1 前提铺垫 除了与上一篇相同的&#xff0c;这里介绍新的基础知识。 1.1 三种类型的程序 计算密集型&#xff08;CPU导向&…

【操作系统】进程调度(4):I/O、不可预测的运行时间

0 前言 上一篇文章&#xff1a;进程调度&#xff08;3&#xff09;&#xff1a;RR&#xff08;轮转&#xff09; 算法 原理与实践 1 前提铺垫 与上一篇同。 2 引入I/O操作 之前我们一直提及的是计算密集型程序&#xff0c;现在我们的程序可以进行I/O交互了&#xff0c;它会…