0 0

我以为我懂 this 了,但是看到这段代码,我无法浆糊了10

贴代码:

 

@SuppressWarnings("unused")
public class Client {
	public static void main(String[] args) {
		B b = new B();
	}
}
class A{
	private String name = "class A";
	public A(){
		System.out.println("A: "+ this.getClass().getName() );
		System.out.println("A: "+ this.name);
	}
}
class B extends A {
	private String name = "class B";
	public B() {
		System.out.println("B: "+ this.getClass().getName() );
		System.out.println("B: "+this.name);
	}
}

上面代码的运行结果如下:

 

 写道
A: cn.test.generic.B
A: class A
B: cn.test.generic.B
B: class B

 为什么会出现这样的结果呢?this既然是 Class B ,为什么能打印 A 中的私有属性值呢?

 

 

 

 


问题补充:我的问题是,在构造父类时,this到底指向的是什么对象?
2012年12月21日 08:57

9个答案 按时间排序 按投票排序

1 0

    在子类实例化调用父类构造方法时会把实例传到父类中,应此在调用父类的构造方法时,this是子类的对象引用;private的访问范围是本类,所以相当于子类实例在A类中访问自己的变量,所以打出A类的变量

2012年12月21日 11:20
1 0

     * Returns the runtime class of this {@code Object}. The returned
     * {@code Class} object is the object that is locked by {@code
     * static synchronized} methods of the represented class.


看源码解释,getClass()返回的是运行时的类,这个程序运行时的类是B,不是A

2012年12月21日 09:48
0 0

引用
问题补充:我的问题是,在构造父类时,this到底指向的是什么对象?


在父类构造器中,this也是指向实际的实例(Class B的实例)。但私有对象变量不可能存在继承关系,使用this访问私有对象变量时采用编译期静态绑定(不会在运行期去查看子类是否有同名的变量),因此在父类中用this访问私有变量只会访问到父类中的那一个。

这个现象跟构造器没有本质联系,你在子类中调super方法,在super方法中用this访问私有变量同样是访问到super类中的那个私有变量。

2012年12月24日 20:38
0 0

new子类的时候调用父类的构造,private的访问权限是:类的内部,问题解决了。

2012年12月21日 11:20
0 0

A, B 类代码等同于下:


class A{  
    private String name = "class A";  
    public A(){  
        super();
        System.out.println("A: "+ this.getClass().getName() );  
        System.out.println("A: "+ this.name); 
    }  
}  
class B extends A {  
    private String name = "class B";  
    public B() {  
        super();
        System.out.println("B: "+ this.getClass().getName() );  
        System.out.println("B: "+this.name);  
    }  
}  

2012年12月21日 11:18
0 0

子类构造方法 默认会调用父类的构造方法 所有New B 的时候先实例父类 A  在实例化B

2012年12月21日 10:39
0 0

调用子类的构造方法的时候,会先调用父类的构造方法。和this没有关系。

2012年12月21日 09:53
0 0

子类初始化前会先调用父类的构造方法,你new B()的时候,先调用了A()的构造方法

2012年12月21日 09:31
0 0

public class TestParent {
	public static void main(String[] args) {
		Child c = new Child();
		Parent p = c;
		System.out.println(p.name); // Parent
		System.out.println(p.get());// Child
		System.out.println(c.name);// Child
		System.out.println(c.get());// Child
	}
}

class Parent {
	String name = "Parent";

	public String get() {
		return name;
	}
}

class Child extends Parent {
	String name = "Child";

	public String get() {
		return name;
	}
}

2012年12月21日 09:03

相关推荐

    大班美术 浆糊印画.doc

    1. **体验与尝试**:鼓励幼儿勇敢尝试浆糊印画这一新颖的艺术表现手法,享受创作的乐趣,养成积极探究的良好习惯。 2. **合作与沟通**:在活动中,孩子们需要与同伴共同进行创作,通过协商解决遇到的问题,提升他们...

    浆糊贴标机的开发方向

    浆糊贴标机的开发方向主要集中在包装机械的现代化、高效化和环保化。随着市场经济的高速发展和消费者生活质量的提高,包装机械行业面临巨大的商机。"十一五"期间,中国包装工业的总产值预计可达4500亿元人民币,并...

    浆糊瓶标贴标机的种类及功能

    浆糊瓶标贴标机是化妆品、药品、食品等行业中广泛应用的一种包装设备,主要用于将浆糊类产品如面霜、洗发水、乳液等产品贴上标签,以便于标识产品信息,提升产品形象。浆糊贴标机因其适应不同形态和特性的浆糊产品而...

    行业文档-设计装置-一种新型浆糊笔.zip

    标题中的“设计装置”指的是对某种机械设备或工具的设计过程,而“新型浆糊笔”则是一种创新的工具,可能是用于书写、绘画或是特殊工艺制作的工具。浆糊笔可能结合了传统的笔和浆糊的功能,使得在某些特定的创作或...

    行业分类-设备装置-古书画装裱浆糊及其制备方法.zip

    在这个过程中,浆糊作为装裱的粘合剂起着至关重要的作用。本文将深入探讨古书画装裱浆糊的种类、制作方法以及其在文物保护中的应用。 浆糊是装裱工艺中的核心材料,它的质量直接影响到书画作品的保存寿命。传统的...

    行业资料-电子功用-光电自动浆糊机的说明分析.rar

    光电自动浆糊机是一种在电子行业中广泛应用的自动化设备,主要用于浆糊的精确涂抹。这份行业资料深入探讨了这种机器的工作原理、设计特点以及在实际生产中的应用,旨在为电子制造企业提供有关浆糊机的详尽知识。以下...

    行业分类-设备装置-壁纸上浆机中的自动浆糊供给方法及其装置.zip

    本话题聚焦于壁纸上浆机中的自动浆糊供给方法及其装置,这是一个旨在提高生产效率、减少人力成本和保证产品质量的关键技术。 自动浆糊供给系统的核心目标是实现浆糊的精确控制和持续供应,以确保壁纸涂层的一致性和...

    幼儿园教案2021-大班美术 浆糊印画.doc

    【知识点】 1. 幼儿美术教育:此教案属于大班美术活动...总结,这份教案充分体现了以幼儿为中心的教育理念,通过趣味性的美术活动,全面培养幼儿的多元智能,不仅教授技巧,更注重情感、社会性和认知能力的同步发展。

    电信设备-代替浆糊粘贴的信(函)袋封口器.zip

    "电信设备-代替浆糊粘贴的信(函)袋封口器.zip"这个文件压缩包显然聚焦于一个旨在提升通信处理速度和工作流程优化的设备——信(函)袋封口器。这种设备是用来替代传统浆糊粘贴方式,对大量信封或邮件进行快速、整洁...

    大班美术欣赏教案《浆糊印画》润新教育.txt

    大班美术欣赏教案《浆糊印画》润新教育.txt

    大班美术活动教案《浆糊印画》润新教育.txt

    大班美术活动教案《浆糊印画》润新教育.txt

    电子功用-可重结晶的玻璃作为等离子体面板电极浆糊的矿物粘合剂的应用

    这篇行业资料——"电子功用-可重结晶的玻璃作为等离子体面板电极浆糊的矿物粘合剂的应用"探讨了在PDP制造过程中,采用可重结晶玻璃作为电极浆糊的粘合剂的创新技术。 等离子体显示面板的工作原理基于气体放电现象,...

    浆糊贴标机单层热封包装材料对包装机的适性

    浆糊贴标机单层热封包装材料对包装机的适性主要涉及到食品包装领域,尤其是针对自动包装机的工作特性。这些包装材料主要用于食品包装,如烟包、饼干包装和牛奶包装,要求材料具备良好的热封性能、机械强度以及与自动...

    python实现解数独程序代码

    无奈是个数独菜鸟,以前没玩过,根本就走不出几步就一团浆糊了。 于是就打算借助计算机的强大运算力来暴力解数独,还是很有乐趣的。 下面就记录一下我写解数独程序的一些思路和心得。 一.数独游戏的基本解决方法 ...

    pytorchDQN.py

    那么也可以拿来做强化学习, 之前我用另一个强大神经网络库 Tensorflow来制作了这一个 从浅入深强化学习教程, 你同样也可以用 PyTorch 来实现, 这次我们就举 DQN 的例子, 我对比了我的 Tensorflow DQN 的代码, 发现 ...

    100小时学会sap

    我个人是蛮喜欢这个书的,尽管里面错误不少。 但是从操作层面来说,知识覆盖面蛮全的。 但是这本书也很操蛋的说。 封面上说100小时学会SAP,恐怕这个100小时是针对熟手而言的。 新人如果100天能都全部搞定,就要...

    单片机可调电子钟及初始--HELLO--显示

    在这个项目中,我们看到的"HELLO"显示可能是系统启动或操作成功时的一个简单提示信息,它通常用于验证硬件和软件的基本功能。下面我们将深入探讨这个主题。 首先,单片机(Microcontroller Unit,MCU)是这种电子钟...

    幼儿园中班美术教案《我装饰的光盘》.doc

    这篇《我装饰的光盘》的中班美术教案,旨在通过利用废旧光盘进行装饰创作,引导孩子们关注环保,同时提升他们的艺术表现力。 活动背景揭示了现代社会中光盘使用后易被丢弃的问题,而通过教学活动,可以教育孩子们...

    大班社会教案我会做.docx

    【大班社会教案《我会做》】是一份旨在培养幼儿独立性和自理能力的教学计划,针对大班幼儿设计。教案的核心目标是通过活动让孩子们在说说、画画中认识到自己能够做的事情,激发他们做事的积极性和独立意识。以下是...

    世界上最小的小程序框架100多行代码搞定全局状态管理和跨页通讯

    众所周知,小程序通过页面或组件各自的 setData 再加上各种父子、祖孙、姐弟、嫂子与堂兄等等组件间的通讯会把程序搞成一团浆糊。受 Omi 框架 的启发,所以有了 westore 全局状态管理和跨页通讯框架让一切尽在掌握中...

Global site tag (gtag.js) - Google Analytics