类有两种重要的成员:成员变量和方法。子类的成员中有一部分是子类自己声明定义的,另一部分是从它的父类继承的。子类继承父类的成员变量作为自己的一个成员变量,就好像该成员变量是在子类中直接声明一样,可以被子类中自己定义的任何实例方法操作。子类继承父类的方法作为自己的一个方法,就好像该方法是在子类中直接定义一样,可以被子类中自己定义的任何实例方法调用。
子类和父类在同一包中的继承性:
如果子类和父类在同一个包中,那么子类自然地继承了其父类中不是private的成员变量作为自己的成员变量,并且也自然地继承了父类中不是private的方法作为自己的方法,继承的成员变量或方法的访问权限保持不变。
子类和父类不在同一包中的继承性:
如果子类和父类不在同一个包中,父类中的private和友好访问权限的成员变量不会被子类继承,即子类只继承父类中的protected和public访问权限的成员变量和方法作为子类的成员变量和方法。
关于protected的进一步说明:
一个类A中的protected成员变量和方法可以被它的子孙类继承,比如B是A的子类,C是B的子类,D又是C的子类,那么B、C和D类都继承了A类的protected成员变量和方法。
如果用D类在D本身中创建了一个对象,那么该对象总是可以通过“.”运算符访问继承的或自己定义的protected变量和protected方法,但是,如果在另外一个类中,比如在Other类中用D类创建了一个对象object,该对象通过“.”运算符访问protected变量和protected方法的权限如下所述:
1. 对于子类D自己声明的protected成员变量和方法,只要Other类和D类在同一个包中,object对象就可以访问这些protected成员变量和方法。
2. 对于子类D从父类继承的protected成员变量或protected方法,需要追溯到这些protected成员变量或方法所在的“祖先”类,比如可能是A类,只要Other类和A类在同一个包中,object对象就能访问继承的protected变量和protected方法。