类对象和接口的理解

类 对象 接口之间的关系及理解

1.类和对象的关系
首先,类是对象的类型。
然后,类是具有相同属性和方法的一组对象集合(一个类可对应多个对象)。
那怎么理解理解类和对象之间的关系呢。

我们举个简单的例子,你是个单身狗,没错,说的就是你,你30多岁了,突然之间顿悟,人到中年了,你需要个女朋友,在你没有具体要求之前你就只知道自己需要个女朋友,她的身高,体重,年龄等等一些具体要求是不确定的,没有一个具体的信息,那我们就把“女朋友”称为一个类,一个女朋友类,在你还没有具体要求之前全世界所有的单身女性甚至是外星人将来都有可能是你的女朋友。
类是确定对象讲会拥有的特征(属性)和行为(方法),它不是具体客观存在的东西。(划重点)之后的某一天你遇到了石榴姐,你对他一见钟情,在你的追求下她成了你的女朋友,而石榴姐就是一个具体对象(女朋友的实例),石榴姐的身高(170CM),体重(57KG)等等都有具体的值,这些就是对象属性,然后石榴姐会做饭,洗衣,打篮球等等,也就是石榴姐能干什么,这是对象的方法。

总结:
类是抽象的概念,仅仅代表事物的模板,比如说“女朋友”、“男朋友”。
对象是一个能够“看得到,摸得着的”具体的实体,比如石榴姐
2.接口的理解

对象通过它们公开的方法来定义它们与外界的交互行为,而方法就形成了与外界交互的接口。
例如电视机的开关按钮就是你与塑料外壳另一侧的电线之间的接口,你只要按下电源开关这个按钮,就可以控制电视机开机和关机,而你不需要关注电视机开机和关机的细节,接口就是让你知道它在做什么,而无需知道它们怎么做;接口更深层的理解是:使定义(规范和约束)和实现(具体的代码逻辑)分离,它是沟通(交互)的中介物(具体实现)的抽象化。

例子(个人理解):我们定义一个手机接口,它具有四个功能,分别是开机,关机,锁屏,打电话。通过阅读这些方法,手机厂商对手机就有一个大概的功能概念,知道手机能干什么,这样大家就有了共识,而具体去怎么实现这些功能就看那些品牌商了怎么去做的了。这里我们拿苹果来举个例子,苹果品牌拿到这个接口并实现了它,并且在这个基础之上进行了功能添加,添加了锁屏功能,这样接口就变成了 苹果手机接口,苹果手机只需要实现它的功能,我们买手机的人就可以使用了,而我们不需要了解他去怎么实现。总而言之接口就是一种规范,一种统一,就好像现在世界之间的国家,每个国家都有法律,但是国家之间的法律各不相同,法律就是一个标准,每个国家必须得有,但是内容要依据每个国家的风土人情和人文环境而定,这里法律就是一个类似于接口的存在。

**接口即是设计:**在设计层面,接口可以避免我们陷入对细节的过多思考,可以让我们站在一个更高的视角对系统做更好的评估,比如系统的交互设计是否合理,功能是否缺失,是否具备可行性,是否过于复杂等等。接口即是约定:在编码层面,接口可以明确的告诉开发人员如何使用(接口的语义,需要什么作为输入,会有什么输出),而开发人员只需要根据这些约定去实现具体的功能代码即可。统一类的共同行为:接口用来统一类的共通行为,当不同的类需要进行信息共享时,是不需要特别去创建类间的关系。举例来说,一个人(Human)及一只鹦鹉(Parrot)都会吹口哨(whistle),然而 Human 及 Parrot 不应该为 Whistler 的子类,最好的做法是令他们为 Animal 的子类,而他们可以使用 Whistler 的接口进行沟通。

我们在使用时无需知道实现类:当接口有实现类时,在使用它的时候无需知道它的实现类是什么(感兴趣的可以了解一下多态、依赖注入)。例如,一个事物因为口哨的噪音影响到其他人,对于其他人而言,就不需要知道噪音来源是来自人还是鹦鹉,因为他们可以确定,一个会吹口哨的事物正在吹口哨。举一个更实际的例子,排序算法可能会期待对象的类型是可以被比較的,于是它只需要知道对象的类型可以被以某种方式进行排序即可,这与对象的类型无关。whistler.whistle() 将会调用对象的实现方法 whistle,而不需要知道对象是以哪个类来实现 Whistler。

最后如果大家有任何问题可以加一下我的Java开发交流群,我会为大家解决我能解决的问题!

群号:1031848061

  • 11
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值