首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

尝试从另一个类获取值,但没有运行最顶层的子类

从另一个类获取值,但没有运行最顶层的子类,这个问题涉及到面向对象编程中的继承和多态的概念。

在面向对象编程中,继承是一种机制,允许一个类(称为子类或派生类)继承另一个类(称为父类或基类)的属性和方法。子类可以通过继承来获得父类的属性和方法,并且可以在此基础上进行扩展或修改。

多态是面向对象编程中的另一个重要概念,它允许不同的对象对同一个消息作出不同的响应。多态性可以通过继承和方法重写来实现。

在这个问题中,如果想要从另一个类获取值,但没有运行最顶层的子类,可能有以下几种情况:

  1. 如果这个类是一个父类,而另一个类是它的子类,可以通过子类的实例来访问父类的属性和方法。可以使用子类的对象调用父类的方法或访问父类的属性。
  2. 如果这个类是一个接口或抽象类,而另一个类实现了该接口或继承了该抽象类,可以通过接口或抽象类的引用来访问实现类或子类的属性和方法。
  3. 如果这个类没有子类或者没有其他类继承或实现它,那么无法从其他类获取该类的值。

总结起来,要从另一个类获取值,但没有运行最顶层的子类,需要考虑类之间的继承关系和多态性。具体的实现方式取决于类之间的关系和具体的编程语言。

腾讯云相关产品和产品介绍链接地址:

  • 腾讯云官网:https://cloud.tencent.com/
  • 云服务器(CVM):https://cloud.tencent.com/product/cvm
  • 云数据库 MySQL 版:https://cloud.tencent.com/product/cdb_mysql
  • 人工智能平台(AI Lab):https://cloud.tencent.com/product/ailab
  • 物联网开发平台(IoT Explorer):https://cloud.tencent.com/product/iotexplorer
  • 移动推送服务(信鸽):https://cloud.tencent.com/product/tpns
  • 对象存储(COS):https://cloud.tencent.com/product/cos
  • 区块链服务(BCS):https://cloud.tencent.com/product/bcs
  • 腾讯云元宇宙解决方案:https://cloud.tencent.com/solution/virtual-universe
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

【Java 泛型】泛型用法 ( 泛型编译期擦除 | 上界通配符 <? extends T> | 下界通配符 <? super T> )

运行时 , 已经没有泛型相关限制 , 泛型限制在编译时就已经被擦除了 ; 但是 泛型信息 , 保存在了常量表中 , 仍然可以获取到 ; 泛型擦除 是为了 泛型可以兼容 老版本 JDK 而设计..., 泛型是 JDK 5 加入 , 如果添加了泛型 , 导致字节码格式改变 , 必然导致之前版本 JDK 无法运行有泛型字节码程序 ; 给定一个 Demo.java , 其中定义了一个 data5 = new Data(); // 不符合要求 , Animal 是顶层 , 其取值都不符合 要求...super Person> data5 = new Data(); // 不符合要求 , Animal 是顶层 , 其取值都不符合 要求...super Animal> data6 = new Data(); 报错信息 : 不符合要求 , Animal 是顶层 , 其取值都不符合 要求

82210

java虚拟机知识点简要梳理

如果父加载器没有找到这个,则再往上查找,一直到顶层启动加载器,如果还是找不到,则启动加载器尝试加载这个,如果没有加载成功,则返回空给子加载器,子加载器如果也没有加载到,则继续往下加载器走...(2).每一层加载器都把加载请求委派给父加载器,直到所有的加载请求都应该传递给顶层启动加载器。...(3).如果顶层启动加载器无法完成加载请求,子类加载器尝试去加载,如果连最初发起加载请求加载器也无法完成加载请求时,将会抛出ClassNotFoundException,而不再调用其子类加载器去进行加载...双亲委派模式加载机制优点是java加载器一起具备了一种带优先级层次关系,越是基础,越是被上层加载器进行加载,保证了java程序稳定运行。...七、卸载 虽然说有人把方法区称作为永久区,实际上还是有可能被回收掉,当某个确定不再被使用时,可以方法区中卸载 参考文档: 1.

55830

友好 Python:面向对象接口

用上了 dataclass,并提供了适当默认值,小 F 还是很熟练嘛。 小 F:算作者识相,没有故意安排我做反面教材。 这个要怎么使用呢?...settinigs = Settings(db_user='root', db_password=os.getenv("DB_PASSWORD")) 多种初始化方式 一个配置,哪能总是参数去指定呢...这种方法有一点小小问题,要 import 东西有点多,这里顶层就暴露了三个和函数。小 F 同事小 C 说,那这样可不可以: class Settings: ......我们千万要警惕这种「炫技」倾向,如果有多种实现方案,一定要选择直截了当简单明白方法。另一个原则是,你提供东西,最好只提供刚好所需要接口,而不暴露多余接口。...减少重复(DRY) 本来打算结束,篇幅不够,那再加一个需求:让配置支持默认环境变量中取值,并且更新环境变量能立刻生效。

17270

Java常见误区与细节

如果变量是byte,short,byte类型,当对其赋予编译时期常量,而该常量又没有超过变量取值范围时,编译器就可以进行隐式收缩转换。...换句话说,如果子类重写了父方法,当父引用指向子类对象时,通过父引用调用子类方法。如果子类隐藏了父方法(成员变量),通过父引用调用仍是父方法(成员变量)。...23 构造器是递归调用子类构造器会调用父构造器,直到调用Object构造器为止。 24 构造器没有创建对象,构造器是使用new创建对象时由系统调用,用来初始化实例成员。...顺序上说,先是创建对象,然后再调用构造器。(构造器并没有产生新对象) 25 默认构造器不为空,该构造器会调用父无参构造器,并可能执行实例成员变量初始化。...=运算符两个操作数类型一个是基本数据类型,另一个是包装引用类型时,将引用类型拆箱转换为基本数据类型,然后比较两个基本数据类型值是否相等。

68430

Java 常见 30 个误区与细节!

如果变量是byte,short,byte类型,当对其赋予编译时期常量,而该常量又没有超过变量取值范围时,编译器就可以进行隐式收缩转换。...换句话说,如果子类重写了父方法,当父引用指向子类对象时,通过父引用调用子类方法。如果子类隐藏了父方法(成员变量),通过父引用调用仍是父方法(成员变量)。...23   构造器是递归调用子类构造器会调用父构造器,直到调用Object构造器为止。 24   构造器没有创建对象,构造器是使用new创建对象时由系统调用,用来初始化实例成员。...顺序上说,先是创建对象,然后再调用构造器。(构造器并没有产生新对象) 25   默认构造器不为空,该构造器会调用父无参构造器,并可能执行实例成员变量初始化。...=运算符两个操作数类型一个是基本数据类型,另一个是包装引用类型时,将引用类型拆箱转换为基本数据类型,然后比较两个基本数据类型值是否相等。

58630

重构-改善既有代码设计:坏代码味道,编写代码20多宗罪(三)

Feature Envy 依恋情节 方法应该去该去地方: 即某个函数为了计算某值,另一个对象那儿调用了大量取值函数 函数对某个兴趣高过对自己所处,通常焦点就是数据...,某个函数为了计算某个值,另一个对象那儿调用几乎半打的取值函数。...如果子类复用了超行为,却有不愿支持超接口,Refused Bequest坏味道就会变得浓烈。拒绝继承超实现, 这点我们不介意;如果拒绝继承超接口,我们不以为然。...1个子类,必须也为另一个相应增加1个子类。...或者可以尝试运用 Hide Delegate (隐藏委托关系)让另一个来为它们传递相思情。

48620

重构·改善既有代码设计.02之代码“坏味道”

单纯Duplicated Code就是“同一个中含有相同表达式”或“两个互为兄弟子类内含有相同表达式”。...函数对某个兴趣程序高于对自己所处兴趣。如果某个函数为了计算某个值,需要从另一个对象中调用几乎一般取值函数,那么就该迁移到它该去地方。 Data Clumps 数据泥团。...单你为某个增加一个子类,必须也为另一个相应增加一个子类。如果你发现某个继承体系名称前缀和另一个继承体系名称前缀完全相同,那么便是这种坏味道。 Lazy Class 冗赘。...继承体系中,子类应该继承超函数和数据。如果子类复用了超累行为(实现),却又不愿意支持超接口。就像他们得到所有礼物,却只从中挑选几样来玩。按传统说法,这就意味着继承体系设计错误。...,然后针对任何功能任何一种可能失败情况,进行测试 测试要诀:测试你担心出错部分 编写未臻完善测试并实际运行,好过对完美测试无尽等待 作者提到,当测试数量达到一定程度之后,继续增加测试带来效益会呈现递减态势

9410

Java培训实战教程之Java基础知识精华部分(四)(五)

多重继承出现,就有了继承体系。体系中顶层是通过不断向上抽取而来。它里面定义该体系最基本共性内容功能。...所以,一个体系要想被使用,直接查阅该系统中功能即可知道该体系基本用法。 那么想要使用一个体系时,需要建立对象。建议建立子类对象,因为子类不仅可以使用父功能。...还可以使用子类特有的一些功能。 简单说:对于一个继承体系使用,查阅顶层内容,创建最底层子类对象。...当子父中出现了一模一样方法时,建立子类对象会运行子类方法。好像父方法被覆盖掉一样。所以这种情况,是函数另一个特性:覆盖(复写、重写) 什么时候使用覆盖呢?...注意: 子类中所有的构造函数都会默认访问父空参数构造函数,因为每一个子类构造内第一行都有默认语句super(); 如果父没有空参数构造函数,那么子类构造函数内

41630

Java 常见 30 个误区与细节!

如果变量是byte,short,byte类型,当对其赋予编译时期常量,而该常量又没有超过变量取值范围时,编译器就可以进行隐式收缩转换。...换句话说,如果子类重写了父方法,当父引用指向子类对象时,通过父引用调用子类方法。如果子类隐藏了父方法(成员变量),通过父引用调用仍是父方法(成员变量)。...23 构造器是递归调用子类构造器会调用父构造器,直到调用Object构造器为止。 24 构造器没有创建对象,构造器是使用new创建对象时由系统调用,用来初始化实例成员。...顺序上说,先是创建对象,然后再调用构造器。(构造器并没有产生新对象) 25 默认构造器不为空,该构造器会调用父无参构造器,并可能执行实例成员变量初始化。...=运算符两个操作数类型一个是基本数据类型,另一个是包装引用类型时,将引用类型拆箱转换为基本数据类型,然后比较两个基本数据类型值是否相等。

59910

详细讲解并发编程中不得不学AQS

1.1 state共享变量 AQS中里一个很重要字段state,表示同步状态,是由volatile修饰,用于展示当前临界资源锁情况。...1.2 CLH队列 AQS里另一个重要概念就是CLH队列,它是一个双向链表队列,其内部由head和tail分别记录头结点和尾结点,队列元素类型是Node。...这个方法是尝试获取资源,但是获取资源方式有很多种实现,比如公平锁有公平锁获取方式,非公平锁有非公平锁获取方式(后面会讲,别急)。所以这里是一个没有具体实现方法,需要由子类去实现。...下面我们源码去分析其实现原理。 首先还是看顶层acquireShared()方法。...tryAcquireShared()方法是一个模板方法由子类去重写,意思是需要如何获取同步资源由实现去定义,AQS只是一个框架。

47010

Java基础教程(12)-Java中IO流

一个输入流能够抽象多种不同类型输入:磁盘文件,键盘或网络套接字。同样,一个输出流可以输出到控制台,磁盘文件或相连网络。Java 定义了两种类型流:字节和字符。...取值 0 或者 1Byte(字节)是计算机操作数据最小单位由 8 位 bit 组成 取值(-128-127)Char(字符)是用户可读写最小单位,在 Java 里面由 16 位 bit 组成 取值...字节流字节流由两个层次结构定义。在顶层有两个抽象InputStream 和 OutputStream。...每个抽象都有多个具体子类,这些子类对不同外设进行处理,例如磁盘文件,网络连接,甚至是内存缓冲区。不用缓冲区,直接对文件本身操作。...顶层有两个抽象:Reader和Writer。这些抽象处理统一编码字符流。抽象Reader和Writer定义了几个实现其他流关键方法。

8810

【笔记】《重构: 改善既有代码设计》

我们应该将消息链尽量提取和拆分, 提炼一些小函数作为链条中间接口, 当用户可以任何节点开始运行时, 解耦就做得差不多了 3.16 中间人 避免太多委托和中间人设计, 如果发现某个另一个交流中有一半以上接口都由中间人来负责的话...如果目标函数使用了源特性,你得决定如何目标函数引用源对象。如果目标没有相应引用机制,就把源对象引用当作参数,传给新建立目标函数。...在目标新建一个字段,修改源字段所有用户,令它们改用新字段。为了稳定搬运, 都是先在目标建立相同字段和对应设/取值函数, 然后慢慢对接直到最终中删除字段...., 可以尝试用多态子类来处理, 用工厂函数包装和类型码有关目标, 然后返回不同子类, 这样未来也方便进行扩展, 尽量保证与类型码相关switch只出现在工厂函数中. 8.15 以状态/策略对象取代类型码...然后为这个添加对应各个类型码子类, 然后在我们目标中保存这个类型码, 增加对应set函数, set函数会工厂函数生成所需类型码对象.

1.5K20

Java并发-AbstractQueuedSynchronizer(AQS)JDK源代码分析

如果 pred waitStatus > 0,表明 pred 线程状态 CANCELLED,需队列中删除(查看1.6中对于节点等待状态取值说明就能理解其中含义)。...2.4 独占模式AQS子类具体代码案例  在上述对AQS分析过程中,提到了tryAcquire,即尝试获得线程锁方法必须得由继承于AQS子类实现,其为获得锁关键实现,所以我们有必要对其做一个举例...0 代表获取成功,没有剩余资源,其它线程不能够继续获取 正数 代表获取成功,还有剩余资源,其他线程还可以去获取 不过如何去判断资源是否有剩余,需要由子类继承AQS后对本方法进行重写,决定其逻辑...四、独占模式与共享模式中AQS方法调用逻辑总结 4.1 AQS独占模式方法分析  独占模式下获得锁方法 方法名 作用/地位 acquire(int arg) 独占模式中使线程获得锁顶层方法 tryAcquire.../地位 acquireShared(int) 此方法是共享模式下获取资源顶层方法 tryAcquireShared(int arg) 此方法是共享模式下获得锁资源核心方法,其必须得由AQS子类方法重写

71220

大白话说Java泛型:入门、使用、原理

也就是说:泛型只存在于编译阶段,而不存在于运行阶段。在编译后 class 文件中,是没有泛型这个概念。...泛型中向上转型 当我们明白了编译时类型和运行时类型之后,我们再来理解通配符诞生就相对容易一些了。 还是上面的场景,我们有一个 Fruit ,Apple 是 Fruit 子类。...这还得我们对盘子定义说起。 Plate<?... JVM 能确定是,任何 Apple 子类都可以转为 Apple 类型,任何 Apple 都无法转为 Apple 类型。...JVM 在编译时候知道,我们具体运行时类型可以是任何 Apple 父级,那么为了安全起见,我们就用一个顶层父级来指向取出数据,这样就可以避免发生强制类型转换异常了。

83060

如何解决代码腐败味道

对象技术改变了这一情况:如果你手上没有所需东西,总可以叫另一个对象给你。有了对象,函数需要东西多半可以在函数宿主中找到。面向对象程序中函数,其参数列通常比在传统程序中短多。...Feature Envy(依恋情节)指的是:函数对某个兴趣高过对自己所处兴趣。 我们常常看到某个函数为了计算某个值,另一个对象那儿调用了几乎半打的取值函数。...Switch Statements(Switch惊悚现身) 面向对象程序一个明显特征就是:少用switch语句。本质上说,switch语句问题在于重复。...在这种情况下,每当你为某个添加一个子类,必须也为另一个相应增加一个子类。 让一个继承体系实例引用另一个继承体系实例。...或者也可以尝试运用Hide Delegate(隐藏“委托关系”)让另一个来为他们传递相思情。 继承往往造成过度亲密,因为子类对超了解总是超过后者主观愿望。

81120
领券