Java中继承时的问题——子类和父类在(或不在)同一个包中的继承

   上一次说到了Java中的继承,当然了,有些父类中的成员变量和方法就不能被子类继承,这是父类的成员变量和方法的访问权限的问题。

   虽然子类继承父类之后,可以将父类中的成员变量和方法当作像是自己定义的一样,直接拿来进行操作,但由于存在访问权限的问题,所以并不是所有的变量和方法都可以随意拿来用。

   当子类和父类在同一个包中时,子类自然地继承了其父类中不是private的成员变量作为自己的成员变量,并且也自然地继承了父类中不是private的方法作为自己的方法,且继承的成员变量或方法的访问权限保持不变。说明白点就是,子类只能继承父类中的public、protected以及友好访问权限的成员变量或方法,并且继承之后,这些成员变量或方法的访问权限和之前的一样,如父类中是public,继承后还是public。这个应该很好理解,private作为访问权限的最低级(访问权限从高到低的排列顺序是:public、protected、友好的、private),定义的成员变量或方法只能被自己使用,不能被其他类使用。

例如:

A.java

public class A {

     intx = 5, y = 8;

     String name;

     public void doMath(){

          System.out.print(name+ "会做数学题,");

     }

     protected void getResult(){

          System.out.print("其计算的结果为:");

     }

}

B.java

public classextends A{

     int add(){

        return(x+y);

     }

}

Test.java

public class Test {

     public static void main(String[] args){

          B b =new B();

          b.name= "小明";             //访问继承的成员变量

          b.doMath();               //调用继承的public的方法

          b.getResult();           //调用继承的protected的方法

          int result = b.add();

          System.out.println("x+ y =" + result);    

     }

}

   但是,当子类和父类不在同一个包中,父类中的private和友好访问权限的成员变量不会被子类继承,那也就是说,此时子类只继承父类中的public和protected访问权限的成员变量作为子类自己的成员变量;同样的,子类也只继承父类中的public和protected访问权限的方法作为子类自己的方法。


  • 13
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值