子类的继承性:
首先得先说明什么是继承,就是说子类继承父类的成员变量和方法就像是在子类中直接声明变量和方法一样在子类中可以使用,一个子类继承的成员应当是这个类的完全意义的成员,如果子类中声明的实例方法 不能操作父类的某个成员变量,该成员变量就没有被子类继承。
(1)子类和父类在同一个包中的继承性
如果子类和父类在同一个包中,那么子类会继承父类中不是private的成员变量和方法,同时这些继承的成员变量和方法的访问权限也不会变。
(2)子类和父类不在同一个包中的继承性
如果子类和父类不在一个包中,那么子类继承了父类的protected和public的成员变量和方法,同样地权限不会发生变化,但要注意不能继承父类的友好变量和友好方法。另外值得一提,我一开始看到这个子类和父类不在同一个包中还能继承protected是很疑惑的,因为根据以下图片protected类型的成员变量和方法在不同包间是不能继承的:(这儿好像有错,注意访问权限和继承的关系,我等有空再进行笔记修改,这儿应该是子类继承父类的成员变量和方法后访问权限不变。----子类继承父类的成员变量方法是类继承到类中的,而访问权限是子类和对象之间的,你对象可能是在其他包或者其他类中创建的。)
protected的进一步说明:
一个类A的子类B有个子类C,那么这个A中的protected成员变量和方法可以被它的直接子类和间接子类继承,B和C可以继承A的上述。如果C类在C本身中创建了一个对象,那么这个对象总是可以通过”.“运算符访问继承的或者自己定义的protected变量和方法,但如果是在另一个类D中创建了一个C的对象D1,那么这个对象对protected变量和方法的访问权限如下:
(1)子类C中亲自声明的protected成员变量和方法(不是从别的类继承的),D1在访问这些非继承的protected成员变量和方法时们只要D类和C类在同一个包中即可。
(2)如果C的protected成员变量和方法是从父类继承来的,那么要一直追溯到祖先源类,即A类,则需D类和A类在同一个包中D1才能访问继承的protected变量和方法。