1.接口中可以定义:属性接口中的属性,默认都是静态常量,访问权限都是public
。方法接口中的方法,默认都是抽象方法,访问权限都是public。
注意:一般接口中不写成员变量,只写方法,相当于制定规则,所以又将接口称为方法列表接口的作用让java从单继承间接的实现了多继承,扩充了原来的功能,我们可以认为接口是类的补充.
2.4.1.2. 接口和抽象类的异同
相同点都可以编译成字节码文件。都不能创建对象。
都可以声明引用。
都具备Object类中所定义的方法。
都可以写抽象方法。
不同点
接口中所有的属性,都是公开静态常量,缺省使用 public static final 修饰
。接口中所有的方法,都是公开抽象方法,缺省使用 public abstract 修饰。
接口中没有构造方法、构造代码段、静态代码段。
3// 非抽象类实现接口,必须重写实现接口中所有的抽象方法
3.2// 抽象类实现接口,接口中的抽象方法,可以实现,也可以不实现
abstract class MyInterfaceAbstractImpl implements MyInterface {}
3.3如果两个接口中定义了两个同名、同参数的方法,但是返回值不同。那么类是没有办法同时实现这两个接口的。
3.4如果有多个相同的方法只需要实现一个;
4.1多态
体现与类相同,向上转型后的接口的引用,调用接口中的方法的时候,实际调用的是实现类中的重写实现。
4.2(了解)
static方法:可以在接口中定义静态方法,静态方法不是抽象方法,是有实现部分的。同时,这个静态方法,只能由当前的接口名字调用,接口的引用和实现类都是不能使用的。
代 `
default方法:修饰接口中的方法,default修饰的方法可以添加默认的实现部分。此时,实现类在实现接口的时候,对于这些方法可以重写,也可以不重写。
4.3 内部类(了解)
内部类,按照定义的位置和修饰符不同,
可以分为:
成员内部类
静态内部类
局部内部类
匿名内部类
4.2.2. 成员内部类(会)
4.2.2.1. 概念 定义在一个类的内部的类.内部类的地位与外部类的成员变量,成员方法平等,内部类也可以看做是外部类的成员,成员之间可以相互调用
4.2.2.2.
使用 外部类的一个成员部分,创建内部类对象时,必须依赖外部类对象。
Outer outer = new Outer();
Inner inner = outer.new Inner();
Inner inner1 = new Outer().new Inner();
4.2.2.3.
特点 书写位置:与属性、方法平级别,且没有使用static修饰的类。
访问权限:内部类可以是任意的访问权限。
成员内部类中,不能写静态属性、静态方法。
编译之后生成的字节码文件格式:外部类$内部类.class
实例化对象,需要借助外部类的对象完成。
4.3
4.2.5.4. 创建匿名子类对象
创建方式第一种方式:使用已有的子类创建匿名子类对象
第二种方式:直接使用Animal创建匿名子类对象
示例代码1使用场景:已经创建好的子类可以多次使用,适用于相同的功能被多次调用构成: new + 父类的名字/接口的名字 + () + {写当前子类的成员} + ;
使用场景:只能使用一次,使用完会被当做垃圾回收,适用于每次都使用不同的功能