本帖最后由 曛丨黯淡浮华 于 2014-12-10 01:09 编辑
1. 子类不能继承父类的private属性,方法。
2. 既然不能继承,那么父类一般情况下会暴露出去2个方法,通过这2个方法来调用vaule ~
3. 这2个方法分别是setValue() , getValue()
4. 子类初始化的时候,调用了自身的构造函数,里面又再调用了super(), 这个super()是隐式的。
5. 也就是说,当子类实例化,那么父类也会随着子类实例化,这是绑定关系。
6. 然后value 就有在内存开辟一个空间,并且赋于 1 的值,
7. 但是,你的子类构造函数调用了父类的构造函数 super(i), 也就说明,你的父类构造函数已经
初始化了 , 隐式也不再执行了, 然后你的构造函数又一次的为value赋值,
也就是说,假设你的子类构造函数,传入一个10 ,那么value就不是1了,而是10了,
我写了个比较简单的例子,你看清楚 ——
- class Fu
- {
- private int value = 1;
- public void setValue(int value)
- {
- this.value = value;
- }
- public int getValue()
- {
- return value;
- }
- }
- class Zi extends Fu
- {
- public Zi(int value)
- {
- setValue(value);
- }
- public static void main(String[] args)
- {
- Zi zi = new Zi(10);
- System.out.println(zi.getValue());
- }
- }
复制代码
|