Java面向对象(二)抽象类和接口
抽象类
使用abstract修饰的类是抽象类,抽象类里面可以没有抽象方法.抽象类不能被实例化,即不能使用new关键字来调用抽象类的构造器.抽象类的构造器主要用于被其子类调用.abstract和final也不能同时修饰一个类.抽象类体现的是一种模版模式的设计.
抽象方法
使用abstract修饰的方法,抽像方法所在的类必须是抽象类,抽象方法没有方法体(即没有小括号后面的大括号)。abstract修饰的方法必须由子类提供实现(重写),而final修饰的方法不能被重写,所以final和abstract不能同时修饰一个方法.抽象方法没有方法体,所以只能通过对象调用,不能通过类名调用,所以abstract和static不能同时修饰一个方法。private修饰的方法只在这个类里面使用,而abstract修饰的方法必须被其子类重写,所有abstract和private不能同时修饰一个方法.
接口
接口是从多个相似类中抽象出来的规范,接口不提供任何实现.接口体现的是规范和实现分离的设计哲学。接口里面定义的是多个类共同的公共行为规范,这些行为是与外部交流的通道。
接口的定义
[修饰符] interface 接口名 extends 父接口1,父接口2…{
零个到多个常量定义…
零个到多个抽象方法定义…
}
- 修饰符可以是public或者省略.省略是包权限访问控制符.
- 一个接口可以有多个直接父接口,但接口只能继承接口,不能继承类.接口里面不能包含构造器和初始化块定义.可以包含Field(只能是常量.不论是否显示使用public static final修饰,接口里面的Field总是使用这三个关键字来修饰),方法(只能是抽象实例方法,总是使用public abstract修饰.不能有静态方法。),内部类(包含内部接口、枚举。总是使用public static修饰)定义。
使用接口
接口不能创建实例,但可以用于声明引用类型变量.实现类实现接口里面的方法时修饰符必须是public。
面向接口编程
面向接口编程体现的是一种规范和实现分离的设计哲学,可以降低程序各个模块之间的耦合,提高系统的可扩展性和维护性。