1.泛化(继承,实现)
A is a B
A有B的所有属性
2.包含(组合,聚合,关联)
A has a B
B是A的一部分
3.依赖
A use a B
A需要B才能实现
继承:
所有类都默认继承object类
object中的方法:
hashcode() 将内存地址计算得到一个整数, public native int hashcode(); native: 调用了底层c++语言的方法
equals() 比较内容是否一致 publice boolean equals(object obj){ return this == obj;}
toString() 把类的内容转化为String字符串
getClass() 获取类的映射
wait 线程等待
notify 线程唤醒
notifyAll 全部唤醒
finalize protected 类被垃圾回收器回收时调用
clone protected 克隆类对象
子类可以继承父类的所有属性和方法,父类中的所有public属性和方法都可以直接使用,private的可以继承但是不能修改和直接使用。
子类用 extends + 父类 继承
每一个类只能继承一个类,让类变的更加安全。
子类可以添加自己独特的属性和方法
权限:public,protected,默认不写,private 从大到小
子类的权限必须大于等于父类
方法返回值:子类范围必须小于等于父类(子类返回值是person,父类返回值是animal)
方法重写: 子类重写父类方法。名字参数一致
方法重载:一个类中的相同名字的方法。 名字一致,参数必须不同
特征标志符:父类中 final static abstract 修饰的方法
final:子类不能重写
static:子类不存在
abstract: 子类必须重写
构造方法:创建子类时会调用子类构造方法,也会调用父类的构造方法
普通方法:子类调用方法时,优先寻找子类符合要求的方法,没有则寻找父类,再没有就寻找父类的父类。
this.方法 () this指的是当前对象的方法,而不是this定义时的所在类。
super.方法() super指的是当前执行的对象的父类。
this和super在构造方法中不能互相调用对方的构造方法。(this和super调用构造方法为this(),super(),且必须写在第一行)
package Extends;
public class People extends Animal{
//构造方法
public People(){
System.out.println("People的构造方法");
}
public void test(){
System.out.println("People的test");
}
public void show(){
System.out.println("age = " + this.age);//this.name在子类中找不到因为是private,在父类中可以this.name使用。
}
public static void main(String[] args) {
People p = new People(); //会运行Object,Animal People 3个类的构造方法
p.test(); //会优先运行p这个对象(是一个people)的方法,如果没有,则去父类寻找
p.age = 11;
}
}
知识兔package Extends;
public class Animal {
private String name;
public int age;
public Animal(){
System.out.println("Animal的构造方法");
}
public void test(){
System.out.println("Animal的test");
}
}
知识兔2.包含(组合,聚合,关联)
一个类中包含另一个类,那个类是这个类的一部分
组合:一起出现,一起消亡。
聚合:整体和部分的关系,创建时有可能分开。
关联:整体和部分,可以分割,后来形成。
高内聚:类内的属性方法只和自己关系密切
低耦合:类和其他类互相影响小
3.依赖
一个类的方法中使用到了另一个类。
可以使传参或者创建等操作。