一、抽象类
来源:普通类中的方法覆写,没有办法强制要求子类,此时就要用到抽象类。
抽象类使用abstract定义,并且抽象类是普通类的超集(普通类有的东西,抽象类全部都有),抽象类只是比普通类多了一些抽象方法而已[0…N].
1.抽象类可以一个抽象方法都没有,但抽象类无法直接实例化对象,也就是无法直接new一个抽象类.
2.抽象方法使用abstract定义,没有方法体{},只有方法声明
//抽象方法
public abstract void printSharp();
3.抽象类必须有子类并且子类必须覆写抽象类中的所有抽象方法(除非子类也是抽象类)
二、接口interface
Java中接口使用interface关键字定义一个接口
接口中只有全局常量+抽象方法(接口中基本上全都是抽象方法).
接口表示一种行为或规范
子类实现接口使用implements实现接口
子类可以同时实现多个接口implements多个
子类实现接口必须实现接口中的所有抽象方法
java中允许多实现(同时实现多个接口),不允许多继承(只能extends一个父类)
多个接口之间使用extends来表示继承父接口
public interface InterFaceC extends InterFaceB,InterFaceA{}
一个类如果同时继承抽象类且实现接口,需先extends一个类,而后implements多个接口
public class InterfaceImplA extends Sharp implements InterFaceA,InterFaceB{}
由于接口中只有全局常量和抽象方法,因此public abstract final static 全都可以忽略不写。接口中权限默认全是public
要求:编写接口时,只保留属性类型以及名称,方法只保留返回值,方法名,参数列表
JDK中内置的两大接口
1.Comparable:表示一种能力
自定义的类不具备比较的能力要想让该类具备比较能力可以让该类实现java.lang.Comparable
CompareTo方法:
当当前对象 > 传入对象O时,返回>0
当前对象 = 传入对象O时,返回0
当前对象 < 传入对象O时,返回<0
2.Cloneable:表示克隆的能力
若在类中,想让其具备可复制的能力,就可以实现Cloneable
深拷贝:当一个对象是通过另一个对象clone出来的,此时这两个对象是相互独立的两个对象,但是这两个对象的内部包含的其他引用是相同的,这种拷贝成为浅拷贝。
浅拷贝:A是通过B拷贝来的,此时A和B包含的所有其他引用也是独立的,这种拷贝成为深拷贝