本人是从C++开发转到Android上的,虽说java和C++都是面向对象的,但还是有很大差别,刚开始接触abstract抽象类与interface接口时也只是知其然不知其所以然.所以在这里记录下学习的过程
abstract抽象类:
大家知道通过继承,可以从原有的类派生出新的类,原有的类称为基类或父类,而新的类则称为派生类或子类.通过这种机制,派生出的新的类不仅可以保留原有的类的功能,而且还可以拥有更多的功能.除了上述的机制之外,Java 也可以创建一种类专门用来当作父类,这种类称为“抽象类”.抽象类的作用有点类似“模版”,其目的是要设计者依据它的格式来修改并创建新的类,但是并不能直接由抽象类创建对象,只能通过抽象类派生出新的类,再由它来创建对象。
abstract定义格式:
abstract class 类名称 //定义抽象类
{
声明数据成员;
访问权限 返回值的数据类型 方法名称 (参数 ...)
{
... 定义一般方法
}
abstract 返回值的数据类型 方法名称 (参数 ...);
//定义抽象方法,在抽象方法里,没有方法体
}
abstract定义规则:
1,抽象类和抽象方法都必须用 abstract 关键字来修饰
2,抽象类不能被实例化,也就是不能用 new 关键字去产生对象
3,抽象方法只需声明,而不需实现
4,含有抽象方法的类必须被声明为抽象类,抽象类的子类必须复写所有的抽象方法后才能被实例化,否则这个子类还是个抽象类
interface接口:
接口是java中所提供的一种非常重要的技术,用于实现多继承的一种机制同样在Android中也是运用的非常广泛,比如最常见的按钮响应接口OnClickListener等,他的结构和抽象类相似,也可以具有数据成员和抽象方法
interface定义格式:
interface接口名称
{
final 数据类型 成员名称 = 常量 ;
//接口中数据成员必须赋初值,且此值不能再被更改,所以声明数据成员的关键字final可省略
abstract 返回值的数据类型 方法名称 (参数 ...);
//定义接口的回调方法, 接口中所有方法一定是抽象方法,所以关键字abstract也可以省略
}
interface 定义规则:
1,接口里的所有方法都是抽象的,只用做声明即可,不用实现
2,数据成员必须赋值,而且是不可改变的
好了,从以上abstract抽象类与interface接口定义的格式和规则就可以知道2者的不同和相似这处
既然已经有了抽象类,为什么还要引入接口呢
这里再次强调一下因为interface接口是java实现多继承的一种机制,java中一个类只能继承一个父类,但如果需要一个类继承多个抽象方法的话,就无法实现了,所以就出现了接口的概念.一个类只能继承一个父类,但是可以实现多个接口.