只有几种情况可以解释这种结果
1.this并不指向son在堆中创建的实例
2.创建对象时内存中使用了其他机制来保证这种结果的生成。
翻看了一下《深入理解Java虚拟机 JVM高级特性与最佳实践》这本书 似乎得出了一些端倪
由此可见当访问成员变量时,检测到父类的成员变量之后程序停止继续寻找。
对于方法,由于其内容存放在方法区内,每个对象的发放应该是通过其自身的this即引用唯一绑定。故就差不多解释的通了。...
分类:
其他好文 时间:
2014-08-18 23:40:53
阅读次数:
414
Python 类的一些基本概念
Python中一切皆对象,声明变量函数等的过程实际上就是它们到内存中为对象分配的空间的连接。Python中的类同Java、C++一样,有自己的属性与方法。属于一个对象或类的变量被称为域。 域有两种类型——属于每个实例/类的对象或属于类本身,它们分别被称为实例变量和类变量。 类的变量 由一个类的所有对象(实例)共享使用。所有对象共用一个类变量的拷贝。对...
分类:
编程语言 时间:
2014-08-18 23:39:13
阅读次数:
373
简单工厂模式举个两个例子:我输入两个数字和(+ - * /)其中一个符号,计算出两个数的结果. 饲养员让(狗 猫 鸟 猪)其中一个动物 叫这里就是一个简单的工厂模式,用户只需要提供他需要的接口,而不需要知道具体的实现工厂判断用户提供的接口,创建对应的子类对象, 返回父类变量给用户(这里涉及里氏替换原...
分类:
其他好文 时间:
2014-08-13 03:30:05
阅读次数:
161
1.什么是类变量?类变量是该类的所有对象共享的变量,任何一个该类的对象去访问它时,取到的都是相同的值,同样任何一个该类的对象去修改它时,修改的也是同一个变量。如何定义类变量?定义语法: 访问修饰符 static 数据类型 变量名;如何访问类变量? 类名.类变量名 或者 对象名.类变量名案例:有一群....
分类:
编程语言 时间:
2014-08-10 18:19:20
阅读次数:
350
对于JAVA中变量的初始化是一个很基础的问题,其中的一些问题也是易被学习者所忽略。当在编写代码的时候碰到时,常被这些问题引发的错误,感觉莫名其妙。而且现在许多大公司的面试题,对于这方面的考查也是屡试不爽。以下是对java变量初始化的时机的分析。【java变量执行初始化..
分类:
编程语言 时间:
2014-08-08 02:12:45
阅读次数:
293
1 package point; 2 3 class Point { 4 5 int x = 0; 6 int y = 0; 7 static int z = 100; // 定义静态变量z,类变量 8 static final double PI = ...
分类:
编程语言 时间:
2014-08-06 22:45:07
阅读次数:
292
Python的静态方法和类成员方法都可以被类或实例访问,两者概念不容易理清,但还是有区别的:1)静态方法无需传入self参数,类成员方法需传入代表本类的cls参数;2)从第1条,静态方法是无法访问实例变量的,而类成员方法也同样无法访问实例变量,但可以访问类变量;3)静态方法有点像函数工具库的作用,而...
分类:
编程语言 时间:
2014-08-04 21:26:27
阅读次数:
309
目标: 登陆界面,登陆错误三次退出程序。假设用户名密码是admin、888888,不区分大小写,(易错点:局部变量与类变量) 局部变量每次运行完毕变量的值都会被销毁,下次再运行,会重新初始化。 而类字段,只要是一个对象,那么只要对象不销毁,就会一直保持对象的字段值。 退出程序:this.close(...
周末闲来无事,做个小例子去看一下JAVA代码初始化的过程JAVA代码初始化分为两个步骤:类初始化,对象初始化。类初始化1 类初始化是指类加载器将类加载到内存时,对类成员的初始化过程(其中包括static修饰的变量)。2 对于加载完的类,它的类变量都会赋一个默认值,即使你定义时就赋值了。3 例如int...
分类:
编程语言 时间:
2014-08-03 15:11:15
阅读次数:
274
Java是一种区分字母的大小写(case-sensitive)的语言,下面谈谈Java语言中包、类、变量等的命名规范。(一)Package(包)的命名:Package的名字应该都是由一个小写单词组成,例如net.ebseries.modules。(二)Class(类)的命名:Class的名字首字母大...
分类:
编程语言 时间:
2014-07-29 11:35:46
阅读次数:
241