成员变量是属于声明的对象还是实际对象

例如以下一道面试题:

package com.evan;

public class ChildClass extends ParentClass {

	public int i = 30;

	public static void main(String[] args) {
		ParentClass pc = new ChildClass();
		ChildClass cc = new ChildClass();
		System.out.print(pc.i + cc.i);
	}
}

class ParentClass {

	public int i = 10;

}

输出是20。40。60哪一个呢?结果是:40

我们都知道对于继承的话都是父类引用指向子类对象。调用方法时是动态调用子类的方法。假设实现了重写。

但是对于属性不是。你声明是什么对象,属性就是归属于声明的对象,而遇实际对象无关。这个在项目中须要注意,也就是说类的属性不存在重写。


原文地址:https://www.cnblogs.com/tlnshuju/p/7239023.html