接口的使用:
>接口使用interface来定义
>java中,接口和类是并列的两个结构
>如何定义接口:定义接口中的成员
>>JDK7及以前:只能定义全局常量和抽象方法
>全局常量:public static final的
>抽象方法:public abstract的
JDK8:除了定义全局常量和抽象方法以外,还可以定义静态方法、默认方法
接口中不能定义构造器:接口不可以实例化
>>Java开发中接口都通过让类去实现(implements)的方式来使用
如果实现类覆盖了接口中的所有抽象方法,则此类就可以实例化
如果实现类没有覆盖接口中所有的抽象方法,则此实现类仍为一个抽象类
>>java类可以实现多个接口,-->弥补了类的单继承性
class AA extends BB implements CC DD
>>接口与接口之间可以继承,而且可以多继承
>>接口的具体使用,体现多态性
>>接口,实际上可以看作是一种规范
第357个视频
>>接口中定义的静态方法只能通过接口调用,
>>通过实现类的对象,可以调用接口中的默认方法
>>如果实现类重写了接口中的默认方法,仍然调用的是重写以后的方法
>>如果实现类继承的父类和实现的接口中声明了同名同参数的方法,那么子类在没有重写此方法的情况下默认调用的是父类中的同名同参数的方法。------->类优先原则。
>>如果实现类实现了多个接口,而这多个接口中定义了同名同参数的默认方法,那么在实现类中没有重写此方法的情况下,报错-->接口冲突
>>需要在实现类中重写此方法
>>java允许将一个类声明在另一个类中,则类A就是内部类,类B称为外部类,
第360个视频
>>成员内部类
一方面,作为外部类的一个成员:调用外部类的结构,可以被static修饰,可以被4种不同的权限修饰
另一方面,作为一个类:类内可以定义属性,方法,构造器等,可以被final修饰,表示此类不能被继承,言外之意,不使用final,就可以被继承。可以被abstract修饰,表示此类不能被实例化
>>如何实例化成员内部类的对象,如何在成员内部类中区分调用外部类的结构,开发中局部内部类的使用,创建成员内部类:Person.Dog dog =Person.Dog(); 其中Dog为Person的成员内部类,
>>abstract能修饰哪些结构,修饰以后,有什么特点?
类、方法
类不能实例化:提供子类,实例化子类
抽象方法:只定义了功能的标准,具体的执行,需要子类实现,
>>接口是否能继承接口?抽象类是否能实现(implement)接口?抽象类能否继承非抽象的类?
能继承,能实现,能继承非抽象的类
abstract AA{
public abstract void m();
}
main(){
AA a = new AA{
public void m(){
}
};
}
a.m();
>>抽象类和接口有哪些相同点和区别
相同点:都不能实例化
不同点:抽象类,有构造器,接口,不能声明构造器
多继承VS单继承
>>如何创建静态成员内部类和非静态成员内部类的对象?
第369个视频:异常处理
abstact和static不能共用,