类和类之间的关系
A is a B 泛化(继承 实现)
继承通过extends关键字(单继承)
实现通过implements关键字(多实现 接口)
注意:方法重写和重载的区别 Object类及方法 内存结构
A has-a B 包含(组合 聚合 关联)
将一个类的对象放置在另一个类中作为属性
A use-a B 依赖(依赖) need-a
一个类的方法使用到了另一个类的对象 方法内部new 方法 传递参数
类关系设计:高内聚 低耦合 继承(实现)>组合>聚合>关联>依赖
继承:1.子类继承父类 通过关键字extends 单继承
2.可以调用父类的属性和方法自己用。 也可以自己添加属性和方法
-
构造方法 先父类再子类 默认调用
-
块 在调用构造方法之前默认执行
3.如果继承过来的方法不满足要求 可以进行方法重写(下一节详细记述方法重载和重写的区别)
4.Object是任何一个引用类的父类(直接或间接)
object是最终的类 没有父类
总共九种object方法(下一节)*5.关于this和super 的使用
this和super都是指代词 代替的是对象
this代替的是当前执行方法时的那个对象 不一定是当前类的
super 代替的是当前执行方法时的对象的父类对象
都能调用一般属性和一般方法
可以放置在类成员的任意位置(属性 方法 构造 块)
注意:调用一般方法时可以来回互相调用(写法 编译好用)执行可能产生问题(StackOverflowError)
可以调用构造方法(放在构造方法的第一行)
this和super在构造方法中调用另一个类的构造方法不能同时出现在第一行
构造方法不能来回互相调用(编译就不好使)
包含
public class Car {
//属性
public String brand;//汽车品牌
public String type;//型号
public String color;//颜色
public Wheel wheel;//车里面有一个轮子--->包含关系
//构造方法
public Car(){
}
public Car(String brand,String type,String color,Wheel wheel){
this.brand= brand;
this.type = type;
this.color = color;
this.wheel = wheel;
}
//方法
public void