通过继承可以得到父类的成员变量,子类的成员变量包括从父类继承的成员变量(包括从祖先类中继承的成员变量)以及子类中重新定义的成员变量。本次介绍内容包括:可以继承哪些成员?如果子类和父类出现了相同的成员变量如何处理?
1、可以继承的成员变量
可以继承的成员变量与成员变量的访问控制类型有关,成员变量的访问控制类型包括public、protected、缺省的和private。
子类继承父类之后,可以继承父类的public和protected类型的成员变量。例如:
public classParent{public inti_public;inti_default;protected inti_protected;private inti_private;
}public class Child extendsParent{private inti_child;
}
父类的成员变量包括:
public inti_public;inti_default;protected inti_protected;private int i_private;
子类的成员变量包括:
public int i_public; //继承自父类
protected int i_protected; //继承自父类
private int i_child; //在子类中声明的
2、覆盖父类的成员变量
假设父类中定义了成员变量a并且能够被子类继承,子类中又定义了成员变量a,这样子类中会有两个名字为a的成员变量,如何访问呢?
先看下面的例子:
public classParent{public int a=10;
}public class Child extendsParent{public int a=20;
}
pubilcclassTest{public static voidmain(String args[]){
Child child= newChild();
System.out.println(child.a);
}
}
运行结果应该是什么呢?
结果应该为20,也就是子类中定义的变量的值。
如果想访问父类中定义的成员变量,如何访问呢?首先把child转换成Parent类型,然后再访问。
System.out.println(((Parent)child).a);
如果在child类中如何访问自己的成员和父类的成员内,通过super来访问,例如下面的代码:
public intgetParentA(){return super.a;
}public intgetChildA(){returna;
}
访问子类的成员变量可以使用this,例如下面的代码:
public intgetChildA(){return this.a;
}
注意:
1)从父类继承的成员变量,其访问控制符仍然相同。
2)子类定义与父类同名的成员变量,并没有覆盖父类的成员变量,而是两个成员变量共存
转:http://www.cnblogs.com/aademeng/p/6129796.html