JAVA中,继承的类可以修改父类成员变量的值?

class FatherClass{
public int value;
public void info(){
value=100;
System.out.println("FatherClass="+value);
}
}
class ChildClass extends FatherClass{
//public int value;
public void info(){
super.info();
value=200;
System.out.println(super.value);
}
}
class TestInherit{
public static void main(String[] args)
{
ChildClass c=new ChildClass();
c.info();
}
}
想了一下问题这样问比较好,就是说:
ChildClass的第一句话int value,写和不写,结果打印super.value是不一样的。
父类有个成员变量value,子类继承的时候就会拥有一个value的成员变量,那如果子类自己再定义一个和父类同样名称的成员变量value的时候,这样岂不是重复定义了么?
如果子类不定义value,而运行到下面的value=200时,就相当于把父类的value值改成200了,而如果子类自己定义了value,改的就是子类自己的值。
在继承中,JAVA是这样定义的么?书上学习的时候没有提到这点啊!

父类有个成员变量value,子类继承的时候就会拥有一个value的成员变量,那如果子类自己再定义一个和父类同样名称的成员变量value的时候,不算是重复!
子类中默认访问子类的变量,如果要访问父类的,就必须使用关键字:super。
这是类的基本概念,不是 Java 的概念。

这叫多态,如果在子类中写了和父类一样的 就近原则 可以百度下 多态

子类中声明父类同类型、同名变量的时候,在子类中访问须引用super关键字

在子类中声明一个与父类同名同类型的成员变量时,这两个变量是不一样的,父类的成员变量必须使用super来调用,若是子类中未声明,子类中可以直接使用,
super.value ,this.value ,value 指的都是父类中继承来的value。

建议你看一下这个,你会了解的
http://blog.csdn.net/mo_fan_qing_wa/article/details/47839415

简单的看一下?。。太长。。

System.out.println(super.value);
你这一句中的super是多余的,子类中没定义value,那子类中写道value就是指的父类中那个value,没必要加super。
只有子类也定义了同名的value,才必须用super加以区分。
这一句有没有super,运行结果是一样的