关于类的成员与继承的一些思考

 在定义类时,类体中除了可以包含变量与方法之外,还可以包含静态初始化块、实例初始化块和构造方法。其中变量和方法称为类的成员。类的成员可以通过类或者类的

实例访问或调用,而静态初始化块、实例初始化块和构造方法只能在类装入或者实例创建是由系统隐含调用。
 一个类除了自己在类体中定义的成员外,还能够从其直接超类和直接超接口中继承一些成员。
 超类中声明为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。

 

 注意:当创建一个子类实例时,除了子类类体中定义的变量之外,其超类中定义的所有变量也会被创建;除了子类类体中定义的方法之外,其超类中定义的方法也都是存

在的。所谓超类中的一些变量和方法不能被子类继承,是指这些变量和方法不能成为子类类型的成员,即通过子类类型变量无法直接访问这些变量和方法,但间接访问是完全可能

的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值