关于java子类继承以及final问题总结

(1)子类和父类如果在同一个包内,则子类可以继承父类的除private以外的所有成员变量和方法,并且权限不变;

(2)子类和父类如果不在同一个包内,则子类可以继承父类的public和protected权限的成员变量和方法,不能继承友好型和private;

(3)protected 的进一步说明:

若有一个A类,B类是A类的子类,C类是B类的子类,则C类继承了A类的protected的成员变量和方法;

若C类本身创建一个对象,可以用这个对象访问继承来的或者自己定义的protected成员变量和方法;

若在其他类里创建一个对象:对于C类自己定义的成员变量和方法,只要这个其他类和D类在同一个包里,那么就可以通过D类创建的对象访问自定义的protected;

对于C类继承自父类的protected,要追溯到“祖先类”A类,若这个其他类和A类同包,则可以通过对象访问继承来的protected。

(4)隐藏和重写:子类的成员变量和父类的成员名字相同的时候,继承自父类的成员变量被隐藏;通过重写继承自父类的方法可以隐藏继承自父类的方法;隐藏后想要调用继承自父类的方法用关键字super.子类重写父类方法,访问权限可以增加或不变,但绝不能减低。

(5)final关键字:final修饰类,类不能被继承;final修饰方法,方法不能重写;final修饰变量,变量是常量,必须赋初值。