1.基本语法:
当Sub和Base在同一个package时,Sub继承了Base中的public、protected和默认(即未指定访问级别)访问级别的成员变量和方法。
当Sub和Base在不同package时,Sub继承了Base中的public、protected访问级别的成员变量和方法。
2.Java不支持多重继承,但可以通过串行的间接继承进行多重继承
3.所有Java类都直接或间接的集成了java.lang.object类。Object类定义了Java对象具有的相同行为。
4.重载overload
同一个类中,相同名字的方法,但是参数类型、个数或者顺序至少有一项不同。
5.覆盖override
子类覆盖了父类的方法,子类方法的名字、参数签名、返回类型必须与父类相同。若想怪边返回类型等,但是还想用同一个名字,则可以使用先覆盖再重载的策略:
注意:
a.子类方法不能缩小父类方法的访问权限(可以扩大),而且子类不能抛出比父类方法更多的异常,其必须抛出和父类方法抛出的相同的异常,或者子类方法抛出的异常类是父类方法抛出的异常类的子类。
b.父类的静态方法不能被子类覆盖为非静态方法。同样,父类的非静态方法不能被子类覆盖为静态方法。
c.子类可以定义与父类的静态方法同名的静态方法,以便在父类中隐藏父类的静态方法。子类覆盖静态方法和覆盖一般方法的区别是,运行时,JVM把静态方法和所属类绑定,而将一般方法和所属实例绑定。
d.父类的私有方法不能被子类覆盖。虽然不会出现编译错误,但是实际上子类并没有从父类继承这个方法,所以,其并没有覆盖关系。
e.父类的抽象方法通过子类实现父类的抽象方法或者子类重新声明父类的抽象方法来实现覆盖。
f.父类的非抽象方法可以被覆盖为抽象方法。
6.super关键字
super和this的功能都是使被屏蔽的方法或变量变为可见。不能在静态方法或者静态代码块内不能使用super关键字。