Java-抽象类和接口
目录
🌿抽象类
🧊抽象类中的抽象方法不能被private所修饰
🧊抽象类中的抽象方法不能被static所修饰
🧊抽象类中的抽象方法不能被final所修饰
🧊抽象类不能被实例化
🧊抽象类的属性字段和普通类没啥区别
🧊抽象类可以有构造方法
🧊抽象类被继承后,子类要么重写抽象方法,要么也是个抽象类
🧊抽象类只可以被单个类继承,,不支持多继承
🧊抽象类可以有普通方法
🌿接口
🧊接口里不能有构造方法
🧊接口里的属性字段默认是public static final所修饰且必须初始化且不能有构造方法
🧊接口里的方法默认是public abstract所修饰的
🧊接口可以被普通类多继承,用关键字implements实现接口
🧊接口中只能有抽象方法,但静态方法除外
🌿浅拷贝和深拷贝
🧊浅拷贝
🧊深拷贝
🌿内部类
🧊静态内部类
🍋🟩静态内部类的定义形式
🍋🟩静态内部类的实例化
🍋🟩静态内部类的注意事项
🧊实例内部类
🍋🟩实例内部类的定义形式
🍋🟩实例内部类的实例化
🍋🟩实例内部类的注意事项
🌿equals方法和hashcode方法
🧊equals的使用
🧊hashcode的使用
🧊注意:
🌿抽象类
🧊抽象类中的抽象方法不能被private所修饰
🧊抽象类中的抽象方法不能被static所修饰
🧊抽象类中的抽象方法不能被final所修饰
🧊抽象类不能被实例化
🧊抽象类的属性字段和普通类没啥区别
🧊抽象类可以有构造方法
🧊抽象类被继承后,子类要么重写抽象方法,要么也是个抽象类
🧊抽象类只可以被单个类继承,,不支持多继承
🧊抽象类可以有普通方法
🌿接口
🧊接口里不能有构造方法
🧊接口里的属性字段默认是public static final所修饰且必须初始化且不能有构造方法
🧊接口里的方法默认是public abstract所修饰的
🧊接口可以被普通类多继承,用关键字implements实现接口
🧊接口中只能有抽象方法,但静态方法除外
🌿浅拷贝和深拷贝
我们要拷贝对象,需要实现Cloneable接口且重写clone方法
🧊浅拷贝
🧊深拷贝
我们看到这样还只是简单的浅拷贝,没有在Person里的QQ类实现Cloneable接口并重写clone方法,所以我们需要在QQ里面改动下
注意:在谁的方法里使用super.clone()方法,就克隆谁,而clone方法不是Java代码实现的,可能是C或C++代码实现的
🌿内部类
内部类有:静态内部类,实例内部类,匿名内部类,局部内部类
而其中静态内部类和实例内部类常用
🧊静态内部类
🍋🟩静态内部类的定义形式
🍋🟩静态内部类的实例化
🍋🟩静态内部类的注意事项
🍎只能访问外部类的静态成员和静态方法
🍎不能访问外部类的非静态成员和非静态方法
🍎可以在静态内部类里面定义非静态成员和非静态方法
🧊实例内部类
🍋🟩实例内部类的定义形式
🍋🟩实例内部类的实例化
🍋🟩实例内部类的注意事项
🍎最好不要在实例内部类里面定义静态成员变量,要的话加上final
🍎不能在实例内部类里面定义静态方法
🌿equals方法和hashcode方法
🧊equals的使用
public boolean equals(Object obj){ 要比较的属性字段的规则}
🍎equals方法常用于对象指定属性的比较,需要重写,因为object的equals方法是默认比
俩个对象的地址值的
🧊hashcode的使用
🧊注意:
如果不重写hashcode方法,Object类的hashcode方法估计默认的是按对象地址值的异同来计算的
重写的话就需要大概像上面一样
🧊🧊写的匆忙,如有不足或错误,还请多多指点!!🍋🟩🍉🧊🍎