在定义类时,类体中除了可以包含变量与方法之外,还可以包含静态初始化块、实例初始化块和构造方法。其中变量和方法称为类的成员。类的成员可以通过类或者类的
实例访问或调用,而静态初始化块、实例初始化块和构造方法只能在类装入或者实例创建是由系统隐含调用。
一个类除了自己在类体中定义的成员外,还能够从其直接超类和直接超接口中继承一些成员。
超类中声明为private的成员不会被子类继承。若超类和子类不在同一个包中,则超类中没有用protected、public修饰的成员不会被子类继承。
另外,静态初始化块、实例初始化块和构造方法都不是成员,因此也不会被继承。
类成员代码案例:
class Test1{
int x=2;
private int y=x;
int fuct1(){
return x*y;
}
}
class Test2 extends Test1{
int z=(x+1)*5;
int fuct2(){
return fuct1()*z;
}
}
class Run(){
public static void main(String args[]){
Test2 t=new Test2();
Systam.out.println(""+t.fuct2());
}
}
这里类Test2扩展了类Test1,继承了其中的实例变量x和方法fuct1。方法fuct1的代码涉及对私有变量y的访问,而该变量并没有被类Test2继承。
应用程序运行时,首先会创建类Test2的实例。在创建类的实例时,不仅会建立在该类中定义的实例变量,也会建立在该类的所有超类中定义的实例变量(不管是否被继
承),如本例将建立三个实例变量,它们的取值分别是:x=2,y=3,z=15。
输出的结果是60。
注意:当创建一个子类实例时,除了子类类体中定义的变量之外,其超类中定义的所有变量也会被创建;除了子类类体中定义的方法之外,其超类中定义的方法也都是存
在的。所谓超类中的一些变量和方法不能被子类继承,是指这些变量和方法不能成为子类类型的成员,即通过子类类型变量无法直接访问这些变量和方法,但间接访问是完全可能
的。