`
wang_2011_ying
  • 浏览: 151454 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

访问子类对象的实例变量

 
阅读更多
class Base{
private int i = 2;
public Base(){
System.out.println(this.getClass());
this.display();
}
public void display(){
System.out.println("Base中的方法"+i);
}
}

class Derived extends Base{
private int i = 22;
public Derived(){
i = 222;
}
public void display(){
System.out.println("Derived中的方法"+i);
}
}
public class Test {

public static void main(String[] args){
new Derived(); }
}
/**************/
输出结果:
class crazy.chapter2.object.Derived
Derived中的方法0

构造器只是负责对java对象实例变量执行初始化(赋值),在执行构造器之前,该对象所占的内存已经被分配下来,这些内存里值都是空值——对于基本类型的变量,默认值都是0或false;对于引用类型的变量,默认值都是null。当程序调用粗体部分时,系统会先为Derived对象分配2块内存空间,分别用来存放Derived对象的两个i实例变量,一个属于Base,另一个属于Derived,此时这两个实例变量都为0。接下来,在执行Derived类构造器之前,首先会执行Base类的构造器。由于Base构造器是在Derived中执行的,所以Base构造器中的this指的是Derived类。this.display()就是调用Derived类中的display方法
分享到:
评论

相关推荐

    java 子类对象赋值给父类对象的使用

    3. **变量隐藏**:如果子类和父类有同名的实例变量,子类变量会“隐藏”父类变量。通过父类引用访问这些变量时,实际访问的是父类的变量,而非子类的。 4. **类型转换**:虽然父类引用可以指向子类对象,但反过来...

    Objective-C 2.0 with Cocoa Foundation--- 7,对象的初始化以及实例变量的作用域

    在Objective-C中,对象的初始化和实例变量的作用域是编程中的关键概念,对于理解和创建健壮的iOS和macOS应用程序至关重要。 首先,让我们深入理解对象的初始化过程。在Objective-C中,初始化通常涉及`init`方法。每...

    java入门教程:数据类型_实例变量.docx

    在类的外部,实例变量需要通过对象引用来访问。在示例代码中,`Employee empOne = new Employee("Ransika");`创建了一个`Employee`对象,并通过`empOne`引用访问其实例变量。在静态方法中或类的外部,我们必须使用...

    类变量、全局变量、实例变量, 多态、为什么ruby、ruby编码规范

    实例变量以`@`开头,它们是对象的私有属性,只能在对象内部访问。每个实例都有自己独立的一套实例变量,互不影响。 ```ruby class Person def initialize(name) @name = name end def introduce puts "Hi, I...

    Java4Android 19_子类实例化过程

    这是因为子类实例变量是在父类实例变量的基础上增加的,因此需要先初始化父类的实例变量。 接下来,关于访问修饰符的影响。在实例化过程中,如果父类的构造器是私有的(private),那么子类无法直接访问,除非在...

    java入门教程:数据类型_实例变量.pdf

    `private`限制了实例变量只在当前类内可访问,`protected`使得子类也能访问,而`public`则允许所有类访问。在上述`Employee`类中,`name`被声明为`public`,而`salary`是`private`的,可以通过`setSalary`方法进行...

    基对象引用子类实例(C# 形象说明:父母可以代表孩子做很多事情)

    这意味着一个子类对象可以被当作基类对象来处理。例如: ```csharp public class BaseClass { public void CommonMethod() { Console.WriteLine("This is a common method in BaseClass."); } } public class ...

    父子实例的内存控制.rar_父子实例的内存控制

    然而,这种多态性并不意味着可以通过父类引用直接访问子类特有的成员,只有子类类型引用才能做到。这涉及到Java的动态绑定机制,即方法调用和实例变量访问都是在运行时基于对象的实际类型决定的。 5. **内存控制...

    c++中子类对象不能调用父类中的虚函数

    然而,有一个重要的概念是:子类对象不能直接调用父类中的虚函数。下面我们将深入探讨这些知识点。 首先,让我们了解`指针`和`引用`。在C++中,`指针`是一个变量,它存储了另一个变量的地址。通过指针,我们可以...

    java多态性详解——父类引用子类对象

    本文将深入探讨Java中的多态性,特别是“父类引用子类对象”的概念,以及这一特性如何在实际编码中体现。 ### 多态性概述 多态性主要通过方法的重写(Overriding)、重载(Overloading)和动态绑定(Dynamic Binding)来...

    java实例化对象的过程

    5. **访问对象的方法和属性**:一旦对象被实例化,我们就可以通过对象变量访问其方法和属性。例如,`obj.display();`会打印出"Name: John"。 在实际开发中,我们可能遇到多态性,接口,抽象类等复杂情况。例如,...

    Java对象与内存控制

    - 创建子类对象时,系统会同时为子类及其父类的实例变量分配内存空间。 - 如果子类定义了与父类相同的实例变量,则子类实例变量会覆盖父类中的同名变量。 - 为了在子类方法中访问父类中被隐藏的实例变量,可以使用`...

    14.java学习第十四章——super()关键字+实例变量(含引用数据类型做实例变量)和局部变量的个人总结+基本数据类型和引用数据类型的存放位置.pdf

    - **定义**:实例变量是类中的变量,它们属于对象的一部分,每个对象都有自己的实例变量副本。 - **特点**: - 没有static修饰符。 - 存储在堆内存中。 - 随对象的创建而创建,随对象的消失而消失。 - 初始化值...

    Java语言与面向对象程序设计第09讲(访问控制符和类的设计)

    例如,通常会将实例变量设为private,然后通过getter和setter方法来访问和修改,这种方法被称为访问器和 mutator 方法,遵循了Java的编码规范。 在类的访问控制方面,Java允许定义公共类(public)和默认类(没有...

    java对象和类知识点.doc

    多态是指一个父类引用可以指向其子类对象,使得同一个方法根据对象的实际类型表现出不同的行为。 类是Java中的基础构造单元,它包含了数据成员(变量)和成员函数(方法)。构造函数是类中的特殊方法,用于初始化新...

    上转型对象体现多态

    - **实例变量**:上转型对象只能访问父类中声明的实例变量,而不能访问子类特有的实例变量。 #### 3. 上转型对象的动态绑定 在Java中,方法调用是动态绑定的,即在编译时只知道方法的签名,而在运行时才确定实际...

    Ruby类实例变量、类实例方法和类变量、类方法的区别

    类实例方法可以读取和修改实例变量的值,也可以执行其他任务,但它们总是在对象实例的上下文中运行。 3. 类变量: 类变量是在类的定义中使用@@符号声明的变量,它们属于整个类,而不是某个特定对象的实例。这意味着...

    论JAVA继承机制中父类与子类的关系

    子类对象可以赋值给父类类型的引用,但此时该对象实际上仍然是一个子类实例,只是从编译角度看作父类类型。这种特性称为“多态”。 示例代码如下: ```java public class SuperClass { protected String ...

    JAVA判断题含答案.doc

    - **知识点**:实例变量是每个对象的一份拷贝,随着对象的创建而创建,销毁时一同销毁。 - **正确答案**:B. 正确 #### 10. 在构造方法中如调用 `super()` 语句,则必须使其成为构造方法中的第一条语句。 - **知识...

    python 基础-类成员变量,提供python2代码示例

    实例变量只能通过实例对象访问,而类变量可以通过类名或实例对象访问。如果在实例方法中重写类变量,那么实例变量将覆盖类变量,除非明确地通过类名访问。 ```python gao.population = 100 # 修改 gao 的人口,但这...

Global site tag (gtag.js) - Google Analytics