数据抽象、封装、类

6 篇文章 1 订阅

先来说说两个概念: 数据抽象 和 封装

第一个问题: 这两个概念从何而来?

答:  数据抽象和封装 是类的基本思想。

为什么这么说?以下用大白话来解释下

 举个例子,一部手机,有 开关机按钮、音量键、显示屏,我们可以通过他们来开关机、调节音量、查看手机信息等。但是手里里面是怎么实现这些功能的我们不知道(我们也不需要知道,这是手机开发者的事情),我们是手机的使用者,我们只关心这些键的用途,里面的构造我们不关心。

好了,接下来,我们把 类(class)看做是一个手机, 开关机按钮、音量键、显示屏等 相当于 类 的接口, 类的实现 指的是 手机实现这些功能的内部构造原理。

那么,什么是数据抽象? 它可以用来 找出共性, 比如,街上有 渣土车、公交车、小汽车,我们通过数据抽象,归纳出他们都是车的一种,共性:可以驾驶。驾驶就相当于一个接口。同时,数据抽象会 暴露接口,隐藏实现细节。这些车都可以载人,但是,内部构造,比如发动机如何带动车轮运作等这些细节隐藏了。

抽象一点说: 数据抽象 是一种依赖接口和实现分离得编程技术。(这个概念看看就行)

继续,什么是封装? 封装实现了接口和实现的分离。需要通过定义一个 抽象数据类型  来实现封装。那就是类。类的设计者需要考虑类内部是如何实现的。类的使用者只需考虑类的接口有什么用,如何使用等。

PS: 再来讲讲,接口  和 实现

什么是接口? 

接口 就是 类对象所能执行的操作。

什么是实现?

实现包括 接口函数的定义、类的数据成员、以及实现类需要的其他私有函数。

最后, 封装 有什么好处?

1. 它隐藏了细节,防止用户错误更改对象的状态,导致用户级错误;

2. 当有新需求的时候,若只需要修改类内部,无需更改接口,那么用户级代码可以保持不变,只需修改类内部及实现后重新编译即可。

 

 

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1.如何抽象出类 1.1 找简单名词 ----------发现类 1.2 找修饰性名词或形容词 ---------发现类的属性 1.3 找动词 ------------发现类的方法 1.4 事不关几,高高挂起 ---------------类的方法和属性只放需要的 1.5 谁最清楚,方法就放在这个类中 --------类的方法发现及放置 2.构造方法 constructor 2.1作用 对象初始化, 通俗地说就是给某些或全部属性赋初值 2.2特点 与类名相同,没有返回值 2.3 如果一个类没有写构造方法,系统会自动添加一个无参的空的构造方法 public Dog(){} 3.静态常量 static final 3.1.1 final 可以修饰类, 方法 , 变量 3.1.2 final 修饰变量的话说明这个变量是常量 3.2.1 static 可以修饰方法和变量 3.2.2 static 修饰变量的话说明这个变量是类变量 3.2.3 static变量(类变量) 用 类名.变量 或用 对象名.变量名 调用 3.2.4 实例变量 只能用 对象名.变量名调用 4.方法重载 overload 一个类中的几个方法名相同,参数列表不同 的情况 (部分内容还要和overwrite 对照讲解) 4.1 方法名相同,参数列表不同 4.2 与访问修饰符和返回值无关 5.封装 encapsulation (private, friendly, protected, public) 5.1 属性私有,通过getXXX()或 setXXX()方法来取值或赋值,在setXXX()方法中添加 代码进行控制 5.2 6.this 表示对象本身(部分内容还要和后面的super对照讲解) 7.八种原生数据类型 作为属性变量的时候 系统会自动赋初值,具体如下: byte 0 short 0 int 0 long 0 float 0.0 double 0.0 boolean false char 空格

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值