
ji抽象类:不能再实例化(造对象)
但是可以被继承,通过子类调用构造器,因此仍然存在构造器,
虽然抽象类不能实例化,但是可以提供子类进行实例化。
抽象方法:只有方法的声明 , 没有方法体,并且只能存在于抽象类中。
public abstract void run();
子类必须在重写了父类中所有的抽象方法后才能实例化否则子类仍然为抽象类
抽象类是为了模型化,父类无法完全确定全部实现,只有通过具体的子类提供更详细的信息实例化。
abstract不能修饰:私有方法、静态方法、final方法、final类 因为不能再变了,所以不能被重写。
抽象类的匿名子类:
由于Person类为抽象类,不能被实例化,因此加一个"{}"在‘“{}”中对Person中的抽象方法直接进行重写,并没有通过声明一个子类的方法进行重写。
interface 接口(规范):由于java不存在多继承,因此提出接口
继承表示”是“的关系,卡车是车,学生是人
而结构表示”能”的关系,消防员、运动员都能坐车、吃饭
实现:继承
虚线:接口
四者都具备了飞,而子d同时具备两个属性。
接口与类是并列关系
接口中:
全局常量:public static fianl 类型 名称 可以省去修饰符 直接定义
抽象方法:
public abstract 返回值类型 方法名();
接口中 不存在构造器,不能实例化
因为接口不能实例化 ,因此通过类的implements实现抽象方法。
实现类必须重写接口中的所有抽象方法才能实例化实现类。否则实现类只能定义为抽象类。
java类可以实现多个接口,弥补单继承的局限性。
implements关键字后逗号隔开即可,但是实现类必须重写所有接口的所有抽象方法才能实例化,
先继承再实现接口:
class A extends B implements C、D、E{
}
接口与接口之间可以多继承
interfance AA extends BB、CC、DD{
}
接口中可以定义静态方法以及默认方法,其中静态方法只能通过"接口.方法"调用,不能通过"实现类’.方法"、“实现对象.方法”调用
默认方法可以通过实现类的对象调用“实现对象.方法”。改默认方法可以被实现类重写。
若实现类:继承父类 同时实现接口,且接口中存在与父类中同名默认方法,则 父类优先。
实现类如果实现了多个接口,接口中存在同名同参的默认方法,则报错。
若需调用接口中的默认方法:
interfaceA.super.fun();
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)