抽象类和接口
抽象类和接口
普通类可以直接产生实例化对象,并且在普通类中可以包含构造方法、普通方法、static方法、常量、变量的内容。而所谓抽象类就是只在普通类的结构里面增加抽象方法的组成部分。
抽象方法:使用abstract关键字定义,没有方法体的方法。(拥有抽象方法的类一定是抽象类,抽象类不一定含有抽象方法)
抽象类是代码开发中的重要组成部分,利用抽象类可以明确地定义子类需要覆写的方法,这样相当于在语法程度上对子类进行了严格的定义限制,代码的开发也就更加标准。
当业务中可以抽象出一个通用的处理过程,知识某些局部传递的状态或参数有所不同,这时可以考虑使用抽象类。
类与类之间。
声明抽象类:
1 public abstract class Abstract{} //声明一个抽象方法
抽象类必须有子类,即每一个抽象类一定要被子类所继承(使用extends关键字),但是在java中每一个子类只能够继承一个抽象类,所以具备单继承局限。
抽象类的子类(子类不是抽象类)必须覆写抽象类中的全部抽象方法(强制子类覆写)。
依靠对象的向上转型概念,可以通过抽象的子类完成抽象类的实例化对象操作。
抽象类的相关限制:
1)抽象类里面由于会存在一些属性,那么在抽象类中一定会存在构造方法,目的是为属性初始化,并且子类对象实例化时依然满足先执行父类构造再调用子类构造的情况。
2)抽象类不能使用final定义,因为抽象类必须有子类,而final定义的类不能有子类。
3)抽象类中可以没有任何抽象方法,但是只要是抽象类,就不能直接使用关键字new 实例化对象。
4)抽象类中依然可以定义内部的抽象类,而实现的子类也可以根据需要选择是否定义内部类来继承抽象内部类。
5)外部抽象类不允许使用static 声明,而内部的首相类允许使用static声明,使用static生命的内部抽象类就相当于是一个外部抽象类,继承的时候使用“外部类.内部类”的形式便是类名称。
6)抽象类中,如果定义了static属性或方法时,就可以在没有对象的时候直接调用。