类与类之间的关系
- A is-a B 泛化 (继承 实现)
- A has-a B 包含 (组合 聚合 关联)
- A use-a B 依赖 (依赖)
类关系设计:高内聚 低耦合 :继承(实现)>组合>聚合>关联 > 依赖
继承
-
1.子类继承父类,通过一个关键字 extends
-
2.子类对象可以调用父类中的(public protected)属性和方法 当作自己的来使用
-
3.子类可以添加自己独有的属性和方法
-
4.子类从父类中继承过来的方法不能满足子类需要,可以在子类中的重写(覆盖 override)父类的方法 更多指的是内容
-
5.每一个类都有继承类,如果不写extends关键字,默认继承Object,如果写了extends则继承后面的那个父类
Object 类,是任何引用类型的父类(直接或间接的继承Object类),Object类没有父类。
-
6.java中的继承是单个存在的(单继承)每个类只有一个继承类(在extends关键字后面只能写一个类)
可以通过传递的方式实现多继承的效果 可以用实现
-
8.关于this和super的使用
-
this 和 super 都是指代词 代替的是对象
this 代替的是 当前执行方法的那个对象 不一定是当前类
super 代替的是当前执行方法的对象的父类的对象 空间内部的那个
都能调用一般属性和一般方法
-
可以放在类成员的任意位置(属性 方法 构造 块)
注意调用一般方法的时候可以来回互相调用(写法 编译好用)执行可能产生问题(StackOverflowError)
可以调用构造方法(放在构造方法的第一行)
-
调用构造方法时:this 和 super不能同时出现,因为都需要放在第一行
-
构造方法之间来回不能互相调用(编译就不好用)
-
方法重载于方法重写的异同
比较 | 方法重写(OverRide) | 方法重载(OverLoad) |
---|---|---|
类 | 产生两个继承关系的类 | 一个类中的一组方法 子类重写父类方法 |
权限 | 子类可以小于等于父类 | 没有要求 |
特征 | final static abstract 父类的方法是final 子类不能重写 ,父类的方法是static 子类不存在 , 父类的方法是abstract 子类必须重写 | 没有要求 |
返回值 | 子类可以大于等于父类 | 没有要求 |
名字 | 必须与父类方法相同 | 必须相同 |
参数 | 必须相同 | 类型或个数或顺序必须不同 |
异常 | 异常 运行时 编译时 如果父类方法抛出运行时异常 子类可以不予理会;如果父类方法抛出编译时异常 子类抛出异常的个数少于等于父类,子类抛出异常的类型少于等于父类。 | |
方法体 | 子类的方法内容与父类不一致 | 每个重载的方法执行过程不一致 |