一、 访问控制修饰符
- 类的访问控制修饰符
- public:public类是一个公共类,该类可以被包内包外的所有类识别。如果一个类定义成 public 类,类名和文件名必须相同。因此,一个.java 文件中,最多只能有一个 public 类。
- 缺省情况:属于默认访问修饰,此时,该类只能被同一包中的所有类识别。
- 成员的访问控制修饰符
- private: 只能在定义它的类的内部被访问。
- default(缺省情况):可以在定义它的类的内部以及被这个包中的其他类访问。
- protected: 可以在定义它的类的内部被访问,也可以被这个包中的其他类访问,还可以被包外的子类访问。
- public: 可以在定义它的类的内部被访问,也可以被包内包外的所有其他类访问。
二、 使用继承
- 为什么需要继承
- 如何实现继承
- 格式:class 子类 extends 父类{}
- Java不支持多重继承,一个子类只能有一个父类。但是Java中可以有多层继承,比如A继承了B,B继承了C,此时相当于A间接继承了C。
-
继承的底层本质
子类继承父类之后,实例化子类对象的时候,系统会首先实例化父类对象。只要实例化子类对象,系统就会自动先实例化一个父类对象与之对应。如果父类构造函数含有参数,那么实例化子类对象时会报错。有两种方法可以解决:第一种是给父类增加一个不带参数的空构造函数。第二种是在子类的构造函数中,第一句用super来给父类构造函数传参数。
三、 成员函数覆盖
- 子类中成员函数的定义和父类相同, 即名称相同, 参数列表相同、 返回类型相同。如果子类中的函数定义和父类相同,子类对象调用时是调用子类中的方法。这叫做覆盖或者重写(Override)。
- 在重写时,子类函数的访问权限不能比父类的更加严格。比如,父类的成员函数访问权限是 public,子类重写时,就不能定义为 protected。
- 在覆盖的情况下,如果一定要在子类中调用父类的成员函数,可以使用 super关键字,调用方法是:super.函数名。
- @Override 重写检查注解