子类成员数目一定大于等于父类成员数目

简介: 子类成员数目一定大于等于父类成员数目

1 问题描述

这个问题是来源于我的导师给我提出的问题,在学习子类与父类的关系之后,子类可以继承父类的属性及方法。那么子类是否可以继承父类的所有方法和属性呢?子类与父类的具体继承关系是怎样的呢?本文围绕这个问题展开说明。

2 问题分析

这个问题涉及到多种可能性,因此我们只有通过实验的方式来得到我们想要的结果。我认为这个实验需要4个类才能完成,三个类用于实现继承关系,一个类用于测试。接下来就来看一下我实验的具体结果。

3 解决方案

首先我创建了四个类,如下:

然后我给每个类(除了Test类)都给了他们自己的方法和属性:

然后我们来继承一下:

我发现类和类之间的继承和接口的实现不同,一个类可以同时实现多个接口,但是一个子类只能继承一个父类,我试了一下同时继承两个父类,但是没有成功,但是类之间可以多重继承,意思就是子类继承父类,然后“孙类”继承父类,子子孙孙无穷无尽。

完成子类和父类的继承关系测试之后,我们来看看子类到底能继承父类多少东西。这里就字需要用到三个类了,两个有继承关系的类和一个测试类。这里我就只用到了Rectangle类和Shape类,还有一个测试类。首先我们在测试类里面实例化一个Shape对象,调用一下他和他父类的所有属性和方法:

我们看到,无论是父类的private(私有的)属性和方法还是他自己本身的private(私有的)属性和方法都无法被调用,图片中红色字体和红色下划线的都为报错。

最后,在没有改变属性的private属性的情况下,我只能给这个私有属性添加一个公共的set和get方法,才成功的在测试类中调用到了他,意思就是当属性为私有的时候,我们需要通过反射的方法去调用这个属性。那么私有的方法怎么办呢?

调用私有方法也是一样,因为java是一个安全性能很高的编程语言,所以私有变量就只能在内部类里面调用,这样才符合面向对象的编程思想。因此我们可以在内部类里面用公有的方法去调用私有方法之后,在测试类中我们就可以间接的调用私有方法。

4 总结

我们都知道,在java语言中的类可以存在继承关系,子类和父类的关系就好比一个儿子和一个父亲,父亲的财产总是会交给儿子,儿子拿到财产之后,儿子还可以创造自己的财产,这样儿子的财产就比父亲原来的财产多了。然后儿子的儿子也就是这里所说的父亲的孙子,还可以继续继承他自己父亲的财产。但是我们发现私有类只能在内部类里面调用,上面的实验也证明了这一点,并且无论是父类的私有类还是子类自己的私有类,我们在测试类中都无法直接调用,需要间接的调用。但是这并不是代表子类不能继承父类的私有类,只是私有类无法直接调用而已。因此,我得出的结论还是子类成员数目一定大于等于父类成员数目,只是私有成员变量我们要通过一些特殊方式才能调用。

目录
相关文章
|
7月前
|
编解码 虚拟化 Windows
Hyper分辨率调整是确保虚拟机图形表现符合期望的重要步骤,怎么调呢
在Hyper-V中调整虚拟机分辨率是确保图形表现符合预期的重要步骤。首先,通过增强会话模式调整:打开Hyper-V管理器,启用增强会话模式,启动虚拟机后在桌面右键选择“屏幕分辨率”进行设置。其次,在虚拟机内部(Windows系统)右键点击桌面空白处,选择“显示设置”,调整分辨率并应用更改。注意事项包括:确保安装Hyper-V集成服务、以管理员权限操作、注意虚拟机类型兼容性、检查显卡驱动并备份数据。这些步骤能帮助你顺利完成分辨率调整。
|
开发者 图形学 C#
深度解密:Unity游戏开发中的动画艺术——Mecanim状态机如何让游戏角色栩栩如生:从基础设置到高级状态切换的全面指南,助你打造流畅自然的游戏动画体验
【8月更文挑战第31天】Unity动画系统是游戏开发的关键部分,尤其适用于复杂角色动画。本文通过具体案例讲解Mecanim动画状态机的使用方法及原理。我们创建一个游戏角色并设计行走、奔跑和攻击动画,详细介绍动画状态机设置及脚本控制。首先导入动画资源并添加Animator组件,然后创建Animator Controller并设置状态间的转换条件。通过编写C#脚本(如PlayerMovement)控制动画状态切换,实现基于玩家输入的动画过渡。此方法不仅适用于游戏角色,还可用于任何需动态动画响应的对象,增强游戏的真实感与互动性。
532 0
|
11月前
|
存储 机器学习/深度学习 并行计算
【AI系统】Tensor Core 深度剖析
Tensor Core 是英伟达 GPU 的关键技术,专为加速深度学习计算设计,尤其擅长矩阵乘法和卷积运算。通过混合精度计算,Tensor Core 使用半精度(FP16)输入输出,内部以全精度(FP32)计算,确保精度同时提高效率。相比传统 CUDA Core,Tensor Core 每个时钟周期可执行 64 个浮点运算,大幅提升计算速度。其工作原理包括指令流水线、线程执行等多级优化,确保高效并行处理。通过分块、分配和并行执行策略,Tensor Core 能有效处理大规模矩阵计算,极大加速神经网络模型的训练和推断。
802 1
【AI系统】Tensor Core 深度剖析
|
11月前
|
机器学习/深度学习 自然语言处理 算法
3大核心技术,免费开源的智能合同审查分析软件的技术介绍
智能法律文档分析系统基于BERT、GPT等模型,实现高精度的实体识别和关系抽取,准确率分别达95%和90%以上。系统支持跨文档关联分析和实时处理,响应时间小于1秒,显著提升文档处理效率。核心算法包括深度学习模型、关系抽取技术和多层次数据处理能力,适用于复杂的法律文书分析。
699 0
3大核心技术,免费开源的智能合同审查分析软件的技术介绍
|
存储 调度
进程和线程之间的区别和联系
进程和线程之间的区别和联系
227 0
|
消息中间件 数据库 RocketMQ
分布式事物【库存微服务业务层实现、实现充值微服务、充值微服务之业务层实现、账户微服务之业务层实现】(九)-全面详解(学习总结---从入门到深化)
分布式事物【库存微服务业务层实现、实现充值微服务、充值微服务之业务层实现、账户微服务之业务层实现】(九)-全面详解(学习总结---从入门到深化)
299 0
|
Java API 对象存储
Spring揭秘:AnnotationMetadata接口应用场景及实现原理!
AnnotationMetadata接口可以轻松获取类、方法或字段上的注解信息,简化注解处理,提供一致且灵活的访问方式,支持运行时处理,让开发者能更专注于业务逻辑而非底层细节,从而加速开发进程。
587 0
Spring揭秘:AnnotationMetadata接口应用场景及实现原理!
|
存储 固态存储 测试技术
优化后,ES 做到了几十亿数据检索 3 秒返回!
优化后,ES 做到了几十亿数据检索 3 秒返回!
|
Kubernetes 负载均衡 前端开发
揭秘Kubernetes标签和选择器:发挥元数据的威力
揭秘Kubernetes标签和选择器:发挥元数据的威力
揭秘Kubernetes标签和选择器:发挥元数据的威力
|
Java Linux Python
java调python文件(使用conda的环境)
java调python文件(使用conda的环境)
553 0