Java基础篇之抽象类和接口的联系与区别

1.抽象类和接口的联系

1. 接口可以看成是一种特殊化的抽象类。

2. 抽象类和接口都是抽象的类,都是不可实例化的。

3. 抽象类的子类和接口的实现类,都必须实现类体里声明的抽象方法。

2.抽象类和接口的区别

1. 分开来讲——

1) 抽象类:

a. 使用abstract class定义。

b. 可以只声明方法(此时应该有abstract修饰),也可以实现自己的方法,并且修饰符没有限制。

c. 变量的定义不受限制。

2) 接口:

a. 使用interface定义。

b. 只能声明方法,不能有实现,同时方法修饰符只能为public。

c. 变量需声明为public static final,并且必须初始化。(一般不用)

2. 合起来说——

a. 一个类只能继承一个抽象类,但它却可以实现一个或者多个接口。

b. 抽象类表明了一个类是什么,是所属关系;而接口则扩展了一个类,强调了它能并且应该干什么。

3.胡扯几句

可以这么描述类、抽象类、接口的联系——

正常来讲,Boy和Girl都继承自Human,表明它们都是人。在这里,Human就是一个抽象类,它定义了作为Human所必需的属性(Field),像身高height,体重weight,性别sex,等等。因此,作为Human的子类,Boy和Girl都必须有这些属性。

同时,Human实现了自己的方法Method,即它的子类在正常情况下都可以这样进行一个动作,像眨眼blink,不管Boy还是Girl,一般天生都是睫毛一抖眼皮一闭,好了,就完成眨眼这个动作了。当然了,对于这些Method,Boy和Girl是可以改变的。就像笑smile,天生都是嘴巴一咧,便笑出来了。但是在后期,笑可能有各自的变化,就像Boy可能变成了阴险一笑,Girl变成了抿嘴一笑。这个时候,Boy和Girl的smile都重写了Human的smile。

当然了,Boy和Girl各自会有一些自己独有的属性和方法,这些属性、方法并不是作为一个Human就会有的。比如Boy的某些特征,Girl每个月都会有的某些行为,嗯大家都懂的。

然而有些行为,作为Human都应该并且必须会做,但是Human并没有给出具体内容,而应该由子类自己实现,这就是抽象方法Abstract Method。如,作为Human,Boy和Girl都应该是会走路walk(当然了,前提是正常来讲),但是Human并没有告诉它们应该怎么去做,而是要自己后天去学习实现的。而这样,也就导致它们可能有不同的实现方式,就像Boy的walk有可能是左脚先迈出去,而Girl的walk是右脚先迈出去。

Boy和Girl都长大了,该上学了,这个时候Student应该值得考虑,因为学生能扩展它们的能力。在这里,Student就是一个接口,它要求了作为一个Student应有的权利(好吧,受教育权)和义务,而这些义务,就是上学study、做作业work,考试examine,嗯,还有打扫教室clean,等等。我声明了,告诉你了这些都是你的义务,你必须实现完成的,至于怎么具体实现就看你自己的了。就像考试,可以靠自己的努力去做好完成;也可以看看书,借鉴借鉴;也可以,那啥,妹子啊,你字写得不错啊,借我看看。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值