关联关系:一个类做为另一个类的属性类型存在。has-a
依赖关系:一个类作为另一个类的参数类型存在。use-a
--------------------------------继承-------------------------------------------------
1、定义:子类能吸收已有类的数据属性和行为,并能扩展新的能力。
2、声明形式:【访问权限修饰符】【修饰符】子类名 extends 父类名{子类体}
注意:1、子类只能继承父类所有非私有的成员(成员方法和成员变量)
2、Java只支持单继承,不支持多继承。Java支持多层继承(继承体系)
3、不要为了部分功能而去继承
3、继承中的成员变量:
在子类方法中访问一个变量
1、首先在子类局部范围找
2、然后在子类成员范围找
3、最后在父类成员范围找(肯定不能访问到父类局部范围)
4、如果还是没有就报错。(不考虑父亲的父亲…)
4、super和this区别
1、this代表本类对应的引用。
2、super代表父类存储空间的标识(可以理解为父类引用)
用法(this和super均可如下使用)
(1)访问成员变量
this.成员变量 super.成员变量
(2)访问构造方法
this(…) super(…)
(3)访问成员方法
this.成员方法() super.成员方法()
注:1、this关键字必须放在非静态方法里面
5、继承中构造方法的关系
1、子类中所有的构造方法默认都会访问父类中无参数的构造方法。为什么?子类初始化之前,一定要先完成父类数据的初始化。每一个构造方法的第一条语句默认都是:super()
2、子类可以通过super去调用父类所有的构造方法。eg:super();
3、子类通过this去调用本类的其他构造方法 eg:this(); 本类其他构造也必须首先访问了父类构造
4、super(…)或者this(….)必须出现在第一条语句上,所以在同一个构造方法中只能出现一个
6、继承中的成员方法
通过子类对象去访问一个方法
1、首先在子类中找
2、然后在父类中找
3、如果还是没有就报错。(不考虑父亲的父亲…)
7、方法覆盖:
1、原则:在继承关系中,同名、同参、同返回值、访问权限不能缩小。
2、什么时候用?如果子类需要修改从父类继承到的方法的方法体,就可以使用方法覆盖(重写)。
8、final修饰符
1、final修饰属性、局部变量,值不能被修改
2、final修饰类,不能被继承
3、final修饰方法,不能被子类覆盖
注意:String类可以继承吗 ? 不可以,因为String类是被final修饰的