一、 抽象类:
1、 定义:抽象类代表一个抽象概念,专门用来继承的。在一个以继承关系形成的等级结构里面,树叶节点应当是具体类,而树枝节点均应当是抽象类。
2、 声明方法:抽象类和抽象方法的声明都使用关键字abstract。
3、 注意事项:(1)不能被实例化。
(2)抽象方法必须被子类重写。
(3)只要类中包含了抽象方法,就必须被定义为抽象类。
二、接口:
1、定义:把隐式公共方法和属性组合起来以封装特定功能的集合。
2、命名方法:在名称的前面加上一个“I”。同时用interface声明。
3、注意事项:(1)类实现了接口就会支持所有接口中的属性和成员。
(2)不能被实例化。
(3) 接口中不包含任何成员的执行方式,不能有实现。
(4)不能有构造方法和字段,修饰符(public、private等)。
抽象类和接口的异同:
从形态角度区分:两者都不能被实例化,抽象类可以给出一些成员的实现,可以被子类部分实现,并且一个类只能继承一个抽象类,但是接口却不包含成员的实现,一个类可以实现多个接口,同时类需要完全实现接口。
从层次角度区分:类是对对象的抽象;抽象类是对类的抽象,而接口是对行为的抽象。也就是说如果我们需要对行为实现类的时候可以采用接口,仅仅是实现一些相似的类对象时可以继承抽象类。
从设计角度区分:抽象类是根据子类中的公共东西泛化出的父类,然后让子类去继承,而接口不需要知道子类的情况,只是定义了一个规范用于不同的类去实现。