1.组合
- 将其他类的对象引用置于新的类中。
3.继承 extends
-
从已知的一个类中派生出新的一个类,叫子类。子类实现了父类所有 非私有化 非静态 的属性和方法,并能根据自己的实际需求扩展出新的行为。
- 继承在内存中其实是先复制一个父类然后添加自己的字段方法。
- 子类中调用继承下来的方法也不需要基类对象引用。继承相当于对基类的一个扩展,因为基类有的它都有,再额外添加了一些域和方法(或覆写方法)而已。
- 子类不能直接访问父类的private字段方法.但是,如果子类继承了访问父类私有字段的公共或受保护方法,则子类也可以通过继承的方法访问父类私有字段方法。
4.super
4.1 super.f() 调用基类的f()方法。
4.2 构造器中的super(args) 调用基类构造器,且只能在第一行。
4.3 由于构造器被重载后默认构造器不存在,且创建子类对象时一定会调用基类构造器,如果不用super则调用基类默认构造器,而基类构造器构造器被重载,故会报错,所以基类构造器被重载后子类要在构造器中显示用super调用基类构造器。
5.何时使用组合或继承
- 组合:新类中实现现有类功能,而非现有类接口。
- 继承:开发一个现有类的特殊版本。
6.final
- final 不可改变数据。 final 引用 不可指向另一对象,这对数组也同样适用,数组也是对象,但对象内容可以改变,不能改变的时引用指向。
- final 参数 : 参数为引用则无法改变指向,参数为基本数据类型则无法改变值。
- final 方法 可被继承但子类无法覆写,所有private方法都是隐式的final.(private 方法非所在类无法访问,final方法不一定 看它是什么权限)
- final 类 无子类,不可继承。
7. main方法
8.1 可以在类中设置main方法,这样便于进行单元测试单独运行这个类。
8.2 除构造器外,其他方法都需要对象调用才能执行,main方法也如此,创建对象并不会调用main方法,只有执行 java 类 命令时main方法才会被调用。
8.3 单独的一个没有main方法的类是无法运行的,main方法时程序运行的入口。
知识点:
- 每一个非基本类的对象都有一个 toString() (从Object继承而来)方法,打印此对象引用就会输出该方法的返回值。
- 默认构造器权限与类权限相同,没写权限的构造器为包访问权限。