------- android培训、java培训、期待与您交流! ----------
1.抽象类:抽象类是指在类中定义方法,但并不去实现它,而在它的子类中去具体的实现。定义的抽象方法不过是一个方法占位符。继承抽象类的子类必须实现父类的抽象方法,除非子类也被定义成抽象类。定义抽象类是通过abstract关键字实现的。
写法特点:
(1)抽象函数只对函数进行声明,没有函数主体。
(2)抽象类和抽象函数都需要用abstract修饰。
(3)抽象类不可以进行实例化即不可以被创建对象。
(4)想要使用抽象功能,必须通过子类覆盖父类中所有的抽象方法后,才可以对子类实例化。如果只覆盖了部分抽象方法,那么子类还是一个抽象类。
也可以理解为:抽象类是一个父类,是不断向上抽取而来的,在抽取过程中,只抽取了方法声明,但没有抽取方法实现。
抽象类和一般类的区别:
(1)抽象类可以定义抽象方法。
(2)抽象类不可以建立对象。
其实抽象类一样用于描述事物,既可以定义抽象方法,也可以定义非抽象方法。
2.接口:接口是java提供的一项非常重要的结构。它定义了一系列的抽象方法和常量,形成一个属性集合。接口定义完成后任何类都可以实现接口,而且一个类可以实现多个接口。实现接口的类必须实现接口中定义的方法,具体实现细节由类自己定义。可以说接口定义了类的框架,它实际是一种完全的抽象类。
格式:
(1)通过interface关键字来定义。
(2)接口中常见成员:常量,抽象方法。而且这些成员都有固定的修饰符。常量:public static final。方法:public abstract。
(3)接口中的成员都是共有的。
(4)一个类可以对接口进行多实现,也弥补了多继承带来的安全隐患,所以java对多继承进行了改良:用多实现方法来体现多继承的特性。
(5)一个类可以继承一个类的同时,实现多个接口。
(6)接口与接口之间是继承关系,而且可以多继承。
应用特点:
(1)接口是对外暴露的规则。
(2)接口是功能的扩展。
(3)接口的出现降低了耦合性。
3.抽象类和接口的异同:
相同:
(1)都可以在内部定义抽象方法。
(2)通常都在顶层。
(3)都不可以实例化,都需要子类来实现。
不同点:
(1)抽象类中可以定义抽象方法和非抽象方法,而接口中只能定义抽象方法。
(2)接口的出现可以多实现。抽象类只能单继承。也就是说:接口的出现避免了单继承的局限性。
(3)继承和实现的关系不一致。继承:is a,实现:like a