首页
学习
活动
专区
工具
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.9K00

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

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

7.3K100
  • 【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 语法将整个模块作为单个对象导入。

    1.1K30

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

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

    9.5K30

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

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

    3.5K40

    精选30道Java笔试题解答

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

    94640

    精选30道Java笔试题解答

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

    44120

    学习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的内存信息时(

    73020

    面试必问之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

    94350

    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: 方法一: redis的sorted 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 } 执行结果如下

    73340

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

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

    2.6K10

    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 * 初始化虚函数表成员变量

    1.1K20

    硬核 | C++ 基础大全

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

    1.2K10

    super关键字

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

    11610

    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该其他线程,线程不会释放对象锁。

    734110
    领券