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

在执行基类中的方法时,如何从dervied类中获取要使用的变量?

在执行基类中的方法时,可以通过以下几种方式从derived类中获取要使用的变量:

  1. 继承:derived类可以继承基类的属性和方法,通过继承可以直接访问基类中的变量。在derived类中,可以使用super关键字来调用基类的方法,并通过super关键字访问基类的属性。
  2. 参数传递:可以在derived类的方法中将要使用的变量作为参数传递给基类的方法。这样基类的方法就可以使用传递的变量进行操作。
  3. 成员变量:在derived类中定义与基类中要使用的变量同名的成员变量。这样在derived类的方法中,可以直接使用成员变量来获取要使用的变量。如果需要在derived类的方法中调用基类的方法,可以使用super关键字。
  4. 属性访问器:在derived类中定义与基类中要使用的变量同名的属性,并在属性的get方法中返回基类中的变量值。这样在derived类的方法中,可以通过访问属性来获取要使用的变量。

需要注意的是,以上方法都要求derived类与基类存在继承关系。如果derived类不是基类的子类,那么无法直接从derived类中获取基类中的变量。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Java 和对象,如何定义Java如何使用Java对象,变量

对象是一个你能够看得到,摸得着具体实体    如何定义Java:  1.重要性:所有Java程序都以class为组织单元  2.什么是是模子,确定对象将会拥有的特征(属性)和行为(方法...5    引用对象方法:对象.方法       phone.sendMessage() ; //调用对象senMessage()方法  成员变量和局部变量  1.成员变量     定义,用来描述对象将要有什么...  2.局部变量      方法定义,方法临时保存数据  成员变量和局部变量区别  1.作用域不同:        局部变量作用域仅限于定义他方法        成员变量作用域整个内部都是可见...  2.初始值不相同:          Java会给成员变量一个初始值          Java不会给局部变量赋予初始值,必要初始化  3.同一个方法,不允许有同名局部变量;  不同方法,...可以有同名局部变量  4.两变量同名,局部变量具有更高得优先级(就近原则)

6.8K00

PHP如何使用全局变量方法详解

有很多方法能够使这些数据成为全局数据,其中最常用就是使用“global”关键字申明,稍后文章我们会具体讲解到。...使用函数参数 停止使用全局变量一种方法就是简单变量作为函数参数传递过去,如同下面所示: 代码如下: 如果你仅仅只需要传递一个全局变量,那么这是一种非常优秀甚至可以说是杰出解决方案,但是如果你传递很多个值...比如说,假如我们要使用一个数据库,一个程序设置和一个用户我们代码,这三个在所有组件中都要用到,所以必须传递给每一个组件。...虽然这些变量都非常标准,而且在你使用也不会出什么问题,但是某些情况下,你可能同样需要使用注册器来封装它们。 一个简单解决方法就是写一个来提供获取这些变量接口。...> 正如你看到,现在我们不再依靠任何全局变量了,而且我们完全让这些函数远离了全局变量。 结论 本文中,我们演示了如何从根本上移除代码全局变量,而相应用合适函数和变量来替代。

7.2K100

【Java 虚拟机原理】Java 加载初始化细节 ( 只使用常量加载不会执行到 ‘初始化‘ 阶段 )

, 解析 ) -> 初始化 这个完整流程 ; 如 : 如果是 public final static 修饰常量值 , 在编译阶段 , 就会将该值放到常量池中 ; 加载过程 , 只要执行到...加载 -> 连接 ( 验证 , 准备 , 解析 ) 阶段 , 就可以完成常量池初始化 , 即使没有执行 初始化 这个步骤 , 也不影响使用常量值 ; 连接 准备 阶段 , 为 普通 ...静态变量 进行 默认赋值 , 但是针对 静态常量 , 直接进行 指定赋值 ; 但是 普通 静态变量 指定赋值 , 是 初始化 阶段 完成 ; " 初始化 " 阶段 , 调用 静态代码块...: 上述 Student 静态代码块 没有被执行 , 说明 加载 流程 , " 初始化 " 步骤 , 没有被执行 ; 找到 Student.class 字节码文件 , 然后使用 javap...创建数组 , 触发是 Student[] 数组类型 加载初始化 , 但是不会触发 Student 初始化操作 ; 如果调用数组元素 , 就需要初始化 Student ; Student

3.6K20

TypeScript 如何导入一个默认导出变量、函数或

TypeScript 如何导入一个默认导出变量、函数或?... TypeScript ,如果导入一个默认导出变量、函数或,可以使用 import 关键字结合 default 关键字来引用默认导出成员。... TypeScript 如何在一个文件同时导出多个变量或函数? TypeScript 使用 export 关键字来同时导出多个变量或函数。有几种常见方式可以实现这一点。...导入这些导出成员,可以使用 import 关键字进行引用。 import { variable1, function1, MyClass } from '..../file'; import 语句用于 file.ts 文件中导入指定变量、函数或,或者使用 * as 语法将整个模块作为单个对象导入。

58030

关于使用MethodHandle子类调用祖父重写方法探究

关于使用MethodHandle子类调用祖父重写方法探究 注:这个例子原本出现在周志明先生《深入理解Java虚拟机》--虚拟机字节码执行引擎章节,介于有读者朋友有疑问,这里基于Java代码层面解释一下...这里直接看Sonthinking方法(关于为何这样实现,《深入理解Java虚拟机》读书笔记(七)--虚拟机字节码执行引擎(下)也解释了)。...由于找到thinking方法是非static,需要一个隐式入参(也就是栈帧中局部变量表第0个位置this参数),java这叫做该方法接收者。...普通方法调用,这个this参数是虚拟机自动处理,表示是当前实例对象,我们方法可以直接使用。...基于这个事实,我们这时可以直接在GrandFatherthinking方法调用Son独有的方法使用反射或者直接类型强制转换为Son就行了。

9.4K30

为什么Java成员变量不能被重写?成员变量Java能够被重写么?不会重写成员变量,而是隐藏成员变量访问隐藏域方法

这篇文章讨论了Java面向对象概念中一个基本概念--Field Hiding(成员变量隐藏) 成员变量Java能够被重写么?...意思就是: 一个,子类成员变量如果和父成员变量同名,那么即使他们类型不一样,只要名字一样。父成员变量都会被隐藏。子类,父成员变量不能被简单用引用来访问。...而是,必须从父引用获得父被隐藏成员变量,一般来说,我们不推荐隐藏成员变量,因为这样会使代码变得难以阅读。...其实,简单来说,就是子类不会去重写覆盖父成员变量,所以成员变量访问不能像方法一样使用多态去访问。...访问隐藏域方法 就是使用引用类型,那么就可以访问到隐藏域,就像我们例子代码 就是使用类型转换System.out.println(((Super)c1).s); 翻译自http://www.programcreek.com

3.5K40

精选30道Java笔试题解答

下列说法正确有() A. classconstructor不可省略 B. constructor必须与class同名,但方法不能与class同名 C. constructor一个对象被new执行...(3)抽象可以包含属性,方法,构造方法,初始化块,内部类,枚举,和普通一样,普通方法一定要实现,变量可以初始化或不初始化但不能初始化后抽象重新赋值或操作该变量(只能在子类改变该变量)。...Java,子类构造过程必须调用其父构造函数,是因为有继承关系存在,子类要把父内容继承下来。但如果父有多个构造函数,该如何选择调用呢?...,但是如果在子类构造方法我们并没有显示调用构造方法,如:super();  这样就会调用父没有参数构造方法。...第二个规则:如果子类构造方法既没有显示调用构造方法,而又没有无参构造方法,则编译出错,所以,通常我们需要显示:super(参数列表),来调用父有参数构造函数,此时无参构造函数就不会被调用

89940

精选30道Java笔试题解答

下列说法正确有() A. classconstructor不可省略 B. constructor必须与class同名,但方法不能与class同名 C. constructor一个对象被new执行...(3)抽象可以包含属性,方法,构造方法,初始化块,内部类,枚举,和普通一样, 普通方法一定要实现,变量可以初始化或不初始化但不能初始化后抽象重新赋值或操作该变量(只能在子类改变该变量)。...扩展:抽象和接口区别,做个总结吧: (1)接口是公开,里面不能有私有的方法变量,是用于让别人使用,而抽象是可以有私有方法或私有变量。...Java,子类构造过程必须调用其父构造函数,是因为有继承关系存在,子类要把父内容继承下来。但如果父有多个构造函数,该如何选择调用呢?...第二个规则:如果子类构造方法既没有显示调用构造方法,而又没有无参构造方法,则编译出错,所以,通常我们需要显示:super(参数列表),来调用父有参数构造函数,此时无参构造函数就不会被调用

38520

学习JVM是如何入门到放弃?(修订版)

访问某个或接口静态变量,或者对该静态变量赋值,调用静态方法 反射方式 初始化某个子类,则其父也会被初始化 Java虚拟机启动被标明为启动,直接使用java.exe命令来运行某个主...(包含main方法那个) 当使用JDK1.7动态语言支持(....)...所以说: Java加载是动态,它并不会一次性将所有全部加载后再运行,而是保证程序运行基础(像是)完全加载到jvm,至于其他,则在需要时候才加载。这当然就是为了节省内存开销。...1.4.2如何加载到jvm class文件是通过加载器装载到jvm! Java默认有三种加载器: ?...什么时候执行YGC和FGC a.eden空间不足,执行 young gc b.old空间不足,perm空间不足,调用方法 System.gc() ,ygc悲观策略, dump live内存信息(

71320

面试必问之JVM篇

访问某个或接口静态变量,或者对该静态变量赋值,调用静态方法 反射方式 初始化某个子类,则其父也会被初始化 Java虚拟机启动被标明为启动,直接使用java.exe命令来运行某个主...(包含main方法那个) 当使用JDK1.7动态语言支持(....)...1.4.2如何加载到jvm class文件是通过加载器装载到jvm! Java默认有三种加载器: ?...(Stack Frame)用于存储局部变量表、操作栈、动态链接、方法出口等信息 本地方法栈:本地方法栈则是为虚拟机使用Native方法服务。...什么时候执行YGC和FGC a.eden空间不足,执行 young gc b.old空间不足,perm空间不足,调用方法System.gc() ,ygc悲观策略, dump live内存信息(jmap

92750

JVM如何入门到放弃

访问某个或接口静态变量,或者对该静态变量赋值,调用静态方法 反射方式 初始化某个子类,则其父也会被初始化 Java虚拟机启动被标明为启动,直接使用java.exe命令来运行某个主...(包含main方法那个) 当使用JDK1.7动态语言支持(….)...1.4.2如何加载到jvm class文件是通过加载器装载到jvm! Java默认有三种加载器: ?...(Stack Frame)用于存储局部变量表、操作栈、动态链接、方法出口等信息 本地方法栈:本地方法栈则是为虚拟机使用Native方法服务。...什么时候执行YGC和FGC a.eden空间不足,执行 young gc b.old空间不足,perm空间不足,调用方法System.gc() ,ygc悲观策略, dump live内存信息(jmap

1.1K00

2021-05-29:最常使用K个单词II。实时数据流中找到最常使用k个单词,实现TopK三个方法: TopK(k

2021-05-29:最常使用K个单词II。实时数据流中找到最常使用k个单词,实现TopK三个方法: TopK(k), 构造方法。add(word),增加一个新单词。...topk(),得到当前最常使用k个单词。如果两个单词有相同使用频率,按字典序排名。 福大大 答案2021-05-29: 方法一: redissorted set。hash+跳表实现计数和查找。...方法二: 节点结构体:有字符串和词频。 词频表:key是字符串,value是节点。 堆:节点数组。 反向表:key是节点,value是索引。 有代码,但不完整,因为时间紧。...) HeapDown(index int) { left := 2*index + 1 for left <= this.heapSize-1 { //左孩子存在 //获取大孩子...this.heap[this.heapSize-1]] = -1 this.heapSize-- //索引下沉 this.HeapDown(0) return ans } 执行结果如下

71240

TypeScript 官方手册翻译计划【十二】:

方法体中使用不合规名字,将会被视为是访问邻近作用域中变量: let x: number = 0; class C { x: string = "hello"; m() {...根据 JavaScript 定义,初始化顺序是: 初始化字段 执行构造器 初始化派生字段 执行派生构造器 这意味着,因为构造器执行时候派生字段尚未进行初始化,所以构造器只能看到自己...,即使对于那些没有使用 TypeScript 进行检查代码也是如此 这样会占用更多内存,因为以这种方式定义函数,会导致每个实例都有一份函数副本 你无法派生使用 super.getName,因为原型链上没有入口可以去获取方法...super 调用定义方法 this 类型 ,名为 this 特殊类型可以动态地引用当前类型。...抽象方法或者抽象字段没有对应实现。这些成员必须存在于一个无法直接被实例化抽象。 抽象角色是充当一个,让其子类去实现所有的抽象成员。

2.5K10

C++面试题

6、静态方法不能被重写为非静态方法(会编译出错)。 重载规则: 1、使用重载只能通过相同方法名、不同参数形式实现。...使用角度,虚函数主要用于信息不全情况下,能使重载函数得到对应调用。构造函数本身就是初始化实例,那使用虚函数也没有实际意义呀。所以构造函数没有必要是虚函数。...解决二义性方案:利用作用域运算符::,用于限定派生使用是哪个成员;派生定义同名成员,覆盖相关成员。 6. 如果类A是一个空,那么sizeof(A)值为多少?...Vector如何释放空间? 想要彻底释放内存,C11引入了shrink_to_fit();,执行完clear()后执行,可完全释放内存 3. 如何在共享内存上使用STL标准库?...2) 假设进程A共享内存中放入了数个容器,进程B如何找到这些容器呢? 一个方法就是进程A把容器放在共享内存的确定地址上(fixed offsets),则进程B可以该已知地址上获取容器。

1.7K42

C++:28 --- C++内存布局(上)

然而,访问虚成员变量,开销就增大了 , 因为必须经过如下步骤才能获得成员变量地址: 1. 获取“虚表指针”; 2. 获取某一表项内容; 3....当声明了一个对象实例,用点“.”操作符访问虚成员c1,由于编译就完全知道对象布局情况,所以可以直接计算偏移量。 当访问继承层次,多层虚成员变量,情况又如何呢?...当然,这个检查只有当指针被显示或者隐式转化为相关类型指针才进行;当在派生对象调用方法,从而派生指针在后台被转化为一个Const “this” 指针,这个检查就不需要进行了,因为在此时...一般说来,当派生访问虚成员,应该先强制转化派生指针为虚指针,然后一直使用指针来访问虚成员变量。这样做,可以避免每次都要计算虚地址开销。 见下例。...最坏情况下,一个构造函数执行如下操作: 1 * 如果是“最终派生”,初始化vbptr成员变量,调用虚构造函数; 2 * 调用非虚构造函数 3 * 调用成员变量构造函数 4 * 初始化虚函数表成员变量

99620

硬核 | C++ 基础大全

大多数编译器,参数是右向左入栈(原因在于采用这种顺序,是为了让程序员使用C/C++“函数参数长度可变”这个特性更方便。...继承概念实现方式有两: 实现继承:实现继承是指直接使用属性和方法而无需额外编码能力。 接口继承:接口继承是指仅使用属性和方法名称、但是子类必需提供实现能力。...,那么进行类型转换,直接截取部分内存,编译器认为类型就是,那么(函数符号表[不同于虚函数表另一个表])绑定函数地址也就是函数地址,所以执行函数。...析构函数也是同理,派生执行了析构函数后,派生自身成员呈现未定义状态,那么执行析构函数是不可能调用到派生重写方法。...,被继承称为父或者; 继承特点 子类拥有父所有属性和方法,子类可以拥有父没有的属性和方法,子类对象可以当做父对象使用; 继承访问控制 public、protected、private

1.2K10

android阿里面试java基础锦集

4.当使用new时候,首先为Dog对象堆上分配足够内存空间。这块内存控件会被清零,所有实例都被初始化成了默认值,包括。 5.执行所有字段定义处初始化,开始。 6.执行构造器。...(第一行会执行构造器) 4.对象销毁是按照创建逆序来进行。 5.final方法都不允许覆盖和继承。private默认实现了final。...7.形式参数可被视为local variable,也就是说形式参数相当于方法定义了一个局部变量a,当传入c,只是将c指向对象给a### 8.finally 语句块是 try 或者 catch...21.解释一下synchronized字段 1.synchronized可以用于修饰方法某线程某个用synchronized修饰方法返回之前,其他所有调用这个对象任意使用synchronized...wait()锁是被释放。 2.该方法是属于Thread、sleep()方法导致了程序暂停执行指定时间,让出cpu该其他线程,线程不会释放对象锁。

714110

super关键字

1.介绍及使用 由于设计不好,或者场景需要,子类和父可能会存在相同名称成员,如果要在子类方法访问父类同名成员,直接访问是无法做到, java提供了super关键字,主要作用:子类方法访问父成员...= 101; // 访问父成员变量,需要借助super关键字 // super是获取到子类对象继承下来部分 super.a = 200; super.b = 201; // 父和子类构成重载方法...); // 访问methodB() } } 子类方法,如果想要访问父成员,借助super关键字。...2.子类构造方法 子类对象构造,需要先调用构造方法,然后执行子类构造方法。...,并没有写任何关于构造代码,但是构造子类对象,先执行构造方法,然后执 行子类构造方法,因为:子类对象成员是有两部分组成继承下来以及子类新增加部分 。

8710
领券