(11)2017.8.10-面向对象(6)

今天我们回顾的是面向对象中的抽象类以及接口。

什么是抽象类?

1.通俗的来说,抽象类就是一个不具体的类。  

2.随着继承层次中一个个新子类的定义,类变得越来越具体,而父类则更一般,更通用。类的设计应该保证父类和子类能够共享特征。有时将一个父类设计得非常抽象,以至于它

没有具体的实例,这样的类叫做抽象类。

那么我们怎么定义一个抽象类呢?

用 abstract 关键字来修饰一个类时,这个类叫做抽象类;同理用abstract 来修饰一个方法时,该方法叫做抽象方法 

这里我们要注意:包含抽象方法的类一定是抽象类,但是抽象类中不一定全都是抽象方法
子类也是抽象类的话,可以不重写父类的抽象方法

抽象类 VS 一般类
一、 相同点:
抽象类和一般类都是用来描述事物的,都在内部定了成员。
二、 不同:
1. 一般类有足够的信息描述事物;抽象类描述事物的信息有可能不足。
2. 一般类中不能定义抽象方法,只能定非抽象方法。抽象类中可定义抽象方法,同时也可以定义非抽象方法。
3. 一般类可以被实例化。抽象类不可以被实例化。
三、注意:
不能用 abstract 修饰属性、私有方法、构造器、静态方法、final的方法

下面就是重点---接口:

接口(interface)是抽象方法和常量值的定义的集合,从本质上讲,接口是一种特殊的抽象类,这种抽象类中只包含常量和方法的定义,而没有变量和方法的实现。 

为什么要有接口,或者说接口有什么用?

由于Java 不支持多重继承
有时必须从几个类中派生出一个子类,继承它们所有的属性和方法。但是,Java 不支持多重继承。有了接口,就可以得到多重继承的效果

如何定义接口 
在 java 中定义类使用关键字 class,定义接口使用关键字 interface 
interface InterfaceA{ } 
1. 如何实现接口 
在 java 中继承类使用关键字 extends,实现接口使用关键字 implements 
class SubClass implements InterfaceA{ } 
2. 一个类可以实现多个接口 
class SubClass extends SuperClass implements InterfaceA, InterfaceB{ } 
3. 接口与接口之间是继成关系,使用 extends 关键字,而且接口可以多继承 
interface InterfaceA extends InterfaceB { } 

接口与具体的实现类之间也存在多态性 

讲完了接口和抽象类,那么他们的区别是:

1.抽象类与接口定义不同:抽象类 abstract class ,接口  interface 

2.接口里只能包含抽象方法,不包含已经实现的方法;抽象类则完全可以包含普通的方法。 

3.接口里不能定义静态方法;抽象类可以定义静态方法 

4.接口里只能定义静态常量属性,不能定义普通属性;抽象类里既可以定义普通属性, 也可以定义静态常量 

5.接口不包含构造函数;抽象类可以包含构造函数,抽象类里的构造函数并不是用于创 建对象,而是让其子类调用这些构造函数来完成属于抽象类的初始化操作。

6.接口不包含初始化块,但抽象类可以包含初始化块 

7.一个类最多只能有一个直接父类,包括抽象类;但一个类可以直接实现多个接口,通过实现多个接口可以弥补 Java 的单继承不足

那他们的相同点是:
1. 接口和抽象类都不能被实例化。只能被其他类实现和继承。
2. 接口和抽象类都可以包含抽象方法,实现接口和抽象类的类都必须实现这些抽象方 法,否则实现的类就是抽象类。

注意:在开发中,一个类不要去继承一个已经实现好的类,要么继承抽象类,要么实现接口 



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

张小五丶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值