抽象类、接口、内部类和匿名类辨析
抽象类、接口、内部类和匿名类辨析
1、软件中类
1)公有类 :任何地方都可见
2)默认类(同包类):当前包中可见
3)内部类:类内部
4)匿名内部类:当前方法中
2、抽象类 abstract
1)使用abstract关键字声明的类
2)表示逻辑上抽象的概念
3)抽象类不能直接实例化
4)抽象类只能被继承
5)抽象类可以定义变量,引用具体类的实例
抽象类的实例是多种多样的——多态现象
6)抽象类中可以定义抽象方法,代表必须由子类实现的抽象的功能,抽象方法规范了子类的方法。
抽象方法:使用abstract关键字定义,有方法名,没有方法体
必须由子类实现的方法,实现API与使用者代码的约定
3、接口
1)是纯抽象类,接口中只能定义抽象方法和常量
2)子类可以实现(implements)多个接口。就是Java中的多继承现象(和抽象类不同的地方)
3)接口可以定义变量,引用子类型实例
4)接口也用于定义软件的规约
3、内部类
1)在类内部,或者在方法中定义的类
2)使用目的,是为了封装类的定义范围,在类内部使用
4、匿名内部类–匿名类
1)语法简洁:new Xoo(){}
2)是在方法中定义的内部类,作用域是当前方法。
3)内部类,匿名内部类,都会编译为一个独立的.class文件
4)常用匿名类在方法中简洁的实现接口或者抽象类。
5)匿名类中的方法经常被回调执行