一、抽象类
1.关键字:abstract
2.抽象方法:只有方法的名字,没有方法的实现。
3.继承了抽象类的子类必须实现该抽象类的抽象方法,除非该子类也是抽象类,那么就由下一个继承的非抽象类来实现。
4.java的类是单继承的,但是接口可以多继承。
5.抽象类的特点
- 不能new这个抽象类,不能被实例化,只能靠子类去实现它:约束!
- 抽象类中可以写普通方法,但是抽象方法必须在抽象类中
- 本质其实就是抽象的抽象:是一个约束
- 抽象类有构造器,也可以有静态方法
- 抽象类存在的意义:提高开发效率
二、接口
1.普通类:只有方法的具体实现
2.抽象类:具体实现和规范(抽象方法)都有!
3.接口:只有规范自己无法写方法。即专业的约束,约束和实现分离:面向接口编程。
4.接口就是规范,定义的是一组规则,接口的本质就是契约,指定之后大家来遵守
5.接口的精髓,就是对对象的抽象,最能体现抽象的就是接口。
6.接口定义的关键字是:interface
7.举例:
- 接口中的所有定义其实都是抽象的 public abstract ,如果省略不写,默认也是抽象的
- 接口中定义的属性都是常量;public static final;不过一般很少用
- 接口都需要有实现类,一般实现类会用Impl来命名
- 类可以实现接口,通过implements关键字
- 实现了接口的类,就需要重写接口中的所有方法,快捷键:alt+insert
- 利用接口实现(伪)多继承,接口和类有区别,类里面有方法的实现,接口里面只有方法的定义。
- 主要是要锻炼抽象的思维,架构师
8.总结接口的作用: - 约束
- 定义一些方法,让不同的人来实现
- 方法是默认public abstract
- 常量是默认public static final
- 接口不能实例化,接口中没有构造方法
- implements可以实现多个接口
- 必须重写接口中的方法
三、内部类
1.在一个类中定义了另一个类
2.通过外部类来实例化内部类
3.内部类可以直接访问外部类的一些私有的属性和方法
补充:一个java文件里面只能有一个public类,但是可以有多个类
局部内部类
在方法里面写的类叫做局部内部类。
匿名对象
匿名对象不用把对象(实例)保存到变量中
如:
匿名内部类
静态内部类
在内部类定义的时候加上static关键字