1、一定分清楚几个概念,那就是对象,类型,变量。类型是存储到方法区的,对象是实例化类型的,是放在堆区,实际程序流程执行的基本数据类型和自定义对象引用则是存储在栈区,因为这些设计到内存机制,还有虚拟机一些机制,因为这些和实际操作系统的内存分区还是有区别的。
2、属性的引用是通过变量来进行的,但是方法的引用则是通过对象进行的。这就说明了一个问题,如果两个变量的对象是一样的,但是他的属性值却有可能不一样。造成这个复杂情况的原因在于是面向对象编程的复杂性。
如:
class A1
{
String name="张三”;
public fangfa
{
System.out.println(this.name);
}
}
class B1 extends A1
{
String name="李四";
public fangfa
{
System.out.println(this.name);
}
}
public static void main()
{
B1 b1=new B1();
A1 a1=b1;
System.out.println("b1的name变量值为“+b1.name+”;a1的name变量值为“+a1.name);
a1.fangfa();
b1.fangfa();
}
编译结果:
b1的name变量值为李四;a1的name变量值为张三;
李四;
李四
这段代码只是演示出来,可能有编译错误没有仔细检查。上述代码只是说明,属性是跟着变量走的,但是方法确实跟着对象走的。
如有错误,欢迎指正,谢谢。