一、抽象类
* 定义
1、含有抽象方法的类,一定是抽象类;抽象类中,不一定要有抽象方法;
2、使用abstract修饰的类就是抽象类,使用该关键字修饰的方法,就是抽象方法;
3、抽象方法没有方法体,以分号结尾,示例:
public abstract class Test {
public abstract void abc();
}
4、抽象类可以成为父类也可以成为子类;
5、当一个类继承了抽象类,必须重写抽象类中的所有抽象方法;
* 使用
抽象类不能被实例化
使用多态的特性,父类引用指向子类对象
抽象类的引用指向其子类的对象
二、接口
* 语法(完全的抽象类)
修饰符 interface 接口名 (-接口只能继承接口用extends){
}
1、接口中只能声明常量和抽象方法;abstract关键字可以省略;
2、接口的实现,使用implements关键字,示例
public class Test implements ITest { }
3、实现接口,必须要重写接口中所有的抽象方法;
4、接口是多继承,子接口不一定要重写父接口的抽象方法,但是实现该子接口的类,必须要重写该子接口及其父接口的所有抽象方法
5、类可以同时实现多个接口,在implements后面依次编写实现接口的接口名,用逗号隔开;
6、类可以继承一个父类,并且同时实现多个接口;语法:继承在前,实现在后
三、内部类
* 成员内部类,声明在外部类的成员部分
成员内部类
静态内部类
* 局部内部类,声明在外部类的成员方法或代码块中的类
局部内部类
匿名内部类
四、匿名内部类
* 条件
1、必须要继承一个类或实现一个接口,语法:
new 父类名 [接口名](){
};
2、匿名内部类创建后,只能被使用一次;
3、匿名内部类没有构造方法;
* 使用
new 父类构造方法{
public void a(){}
}.a();