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 的概念。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。