最近学习Java面向对象方面的知识点,一直没时间更新博客,因为这块的知识点真的蛮绕的。一个知识点一个知识点的往外冒,而且对于我这个初学者来说区分构造器和方法就花费了一整天的时间。现在准备再重新过一遍知识点。

先背下来一个理念:

面向对象程序设计是将数据放在第一位的,然后再考虑操作数据的方法。

之前,再学习Java的优越性的时候,我们知道了Java是一种面向对象设计的程序设计语言。那到底什么是面向对象程序设计呢?要弄懂它,首先我们简单了解一下另一种程序设计。

一、面向过程程序设计:

面向过程程序设计就是自顶向下顺序执行,逐步求精;其程序结构是按照功能划分为若干个基本板块,这些板块形成一个树状结构;各模块之间的关系尽可能的简单,在功能上相对独立;每一板块内部均是由顺序、选择和循环三种基本结构组成的;其板块化实现的具体方法是使用与子程序。程序流程在写程序时就已决定。

(这个概念是我在学习面向对象时在网上找的,我把它和面向对象程序设计的概念抄在一张白纸上,其实我也不知道啥是面向过程程序设计,但是,当我学完一遍面向对象和类之后,再回来看这个概念时,是有收获的。没学过面向过程也不敢多言,仅仅学了一遍面向对象更不敢多加评论了。依照我的理解就是面向过程就像把某件事情的所有工作流程都弄成环环相扣的了,牵一发而动全身。而面向对象呢,它很聪明,它像一个制造大型机械的厂家,零件啥的它不一定都自己弄,但是它可以用尽办法去拼装(当然,拼装你也要遵循人家制定的规则),这样的好处在于,想改那块都不用担心整个工程跟着受牵连,尤其是在客户端那块。)

二、面向对象程序设计:

面向对象程序设计简称OOP,它是当今主流的程序设计范例,它已经取代了20世纪7年代的“结构化”过程化程序设计开发技术。面向对象就是把数据及对数据的操作方法放在一起,作为一个互相依存的整体,我们就叫它对象。对同类对象抽象出其共性,就形成了类。类中的大多数数据只能用于本类的方法进行处理。类通过一个简单的外部接口与外界发生关系,对象与对象之间通过消息进行沟通。程序流程由用户使用中决定。Java是完全面向对象的,必须熟悉OOP才能够编写Java程序。

(图)演示面向对象程序设计与面向过程程序设计的不同

下面这句话很重要:

面向对象的程序是由对象组成的,每个对象包含对用户公开的特定功能部分和隐藏的实现部分。(这句话真的是太重要了,以后学习单例、封装、抽象类、接口的时候,就能体会的到了!)

三、类

类(class)是构造对象的模版或蓝图。由类 构造(construct)对象的过程成为创建类的实例(instance)。

在学习这里的时候,不免会有些惊慌,那么多类都需要记住啊?自己还要创建类?自己创建的类里面的内容能想全面吗?种种疑惑在心里挥之不去。其实啊,用Java编写的所有代码多位于某个类的内部。标准的Java库提供了几千类,可以用于用户界面设计、日期、日历和网络程序设计。尽管如此,我们在弄自己的项目时,也是需要根据具体情况的不同进行增加、删除和改动的。

四、封装

封装(encapsulation,有时候被成为数据隐藏),看视频课,他们把封装形容问get、set方法。从形式上看,封装不过是将数据和行为组合在一个包中,并对对象的使用者隐藏了数据的实现方式。

对象中的数据称为实例域(instance field),操作数据的过程称作方法(method)。对于每个特定的类实例(对象)都有一组特定的实例域值。这些值的集合就是这个对象的当前状态(state)。

下面这句话很重要,背下来:

实现封装的关键在于绝对不能让类中的方法直接的访问其他类的实例域。程序仅通过对象的方法与对象的数据进行交互。

封装给对象赋予了'黑盒“特征,这是提高重用性和可靠性的关键。这意味着一个类可以全面地改变存储数据的方式,只要仍旧使用同样的方法操作数据,其他对象就不会知道或介意所发生的变化。

// 这句话是啥意思?就是说如果你哪天有需求想要定义一个Java的类,就不用担心其他的类会受到你的干扰了,你可以通过扩展一个类来建立一个你需要的新类。别忘了,实际上,在Java中所有的类都源自于一个Object。以后,我会继续介绍Object。

====封装的过程:

1.封装是将属性私有化(private);

2.你要提供get/set方法(get/set不一定都提出来,具体看你自己的需求。如果你不想让别人得到,就不提供get;如果你不想让别人设置,你就拒绝提供set。)

====访问符权限:

访问符 本类中 本包中 本包子类中 外包类 外包子类
public(常用) 可以访问 可以访问 可以访问 可以访问 可以访问
protected 可以访问 可以访问 可以访问 不可以访问 可以访问
缺省 可以访问 可以访问 可以访问 不可以访问 不可以访问
private(常用) 可以访问 不可以访问 不可以访问 不可以访问 不可以访问

代码示例:

 public class XiaoNanHai{
private int age;
public void setAge(int age){
if(age>=15&&age<=35)
this.age=age;}else{
System.err.println"你输入的年龄不在指定范围内,请重新输入”);

Java基础——封装的更多相关文章

  1. Java基础-封装和继承

    @ 目录 Java基础知识(封装和继承) 一. 封装 1.1 封装的目的 1.2 封装的好处 1.3 封装的步骤 1.4 封装的例子 1.5 小结 二. 继承 2.1 继承的介绍 2.2 生活中的继承 ...

  2. java基础--封装

    封 装(面向对象特征之一):是指隐藏对象的属性和实现细节,仅对外提供公共访问方式. 好处:将变化隔离:便于使用:提高重用性:安全性. 封装原则:将不需要对外提供的内容都隐藏起来,把属性都隐藏,提供公共 ...

  3. Java基础—封装

    封装是面向对象的核心特征之一,它提供了一种信息隐藏技术.类的包装包含两层含义:一是将数据和对数据的操作组合起来构成类,类是一个不可分割的独立单位:二是类中既要提供与外部联系的接口,又要尽可能隐藏类的实 ...

  4. Java基础-封装(09)

    通过对象直接访问成员变量,会存在数据安全问题(比如年龄不能为负).这个时候,我们就不能让外界的对象直接访问成员变量. private关键字 是一个权限修饰符.可以修饰成员(成员变量和成员方法)被pri ...

  5. JAVA基础第二章-java三大特性:封装、继承、多态

    业内经常说的一句话是不要重复造轮子,但是有时候,只有自己造一个轮子了,才会深刻明白什么样的轮子适合山路,什么样的轮子适合平地! 我将会持续更新java基础知识,欢迎关注. 往期章节: JAVA基础第一 ...

  6. Java10-java语法基础(九)——java的封装性

    Java10-java语法基础(九)——java的封装性 一.Java的三大特性:封装.多态.继承 封装:通过类封装对象的数据成员和成员方法,保证只有可信的类或者对象能够访问这些方法和数据成员,对不可 ...

  7. Java基础-面向对象第一特性之封装(Encapsulation)

    Java基础-面向对象第一特性之封装(Encapsulation) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.理解什么是面向过程和面向对象 面向过程与面向对象都是我们编程中 ...

  8. Java基础系列1:Java基本类型与封装类型

    Java基础系列1:Java基本类型与封装类型 当初学习计算机的时候,教科书中对程序的定义是:程序=数据结构+算法,Java基础系列第一篇就聊聊Java中的数据类型. 本篇聊Java数据类型主要包括两 ...

  9. Java基础之封装

    封装(Encapsulation)是java面向对象的三大特性,之前学java迷迷糊糊,一直也没弄清楚什么是封装以及为什么要封装,直到这次看书才有一种被点醒的感觉. java中的封装是针对某个类而言的 ...

随机推荐

  1. Vmware Vsphere WebService之vijava 开发(二)一性能信息的采集(实时监控)

    最近一直没有更新这部分的内容,会利用五一时间完成vcenter这一个系列. 这里先给大家一本关于vijava开发的书,比较实用. 地址:http://pan.baidu.com/s/1gfkl9mj. ...

  2. bootstrap快速入门笔记(四)-less用法指南, mixin和变量

    一,less变量,less文件 1.bootstrap.less 这是主要的 Less 文件.该文件中导入了一些其他的 less 文件.该文件中没有任何代码. 2.forms.less 这个 Less ...

  3. Postmark介绍

    一. 引言 Postmark是由著名的NAS提供商NetApp开发,用来测试其产品的后端存储性能. Postmark主要用于测试文件系统在邮件系统或电子商务系统中性能,这类应用的特点是:需要频繁.大量 ...

  4. 使用Spigot搭建MineCraft服务器

    MineCraft 这种游戏还是人多了好玩,以前的服务器放在同学的Windows电脑上,每次我们想玩的时候就让让去打开,但是总是有一些原因,想玩的时候服务器没开着,不想玩的时候服务器空开着费电.昨天一 ...

  5. php函数每日学习二十个

    数学函数 1,abs() 求绝对值 2,ceil() 进一法取整 3,floor() 舍去法取整 4,fmod()对浮点数进行取余 例如fmod(5.7,1.3) 5,pow() 返回数的n次方 po ...

  6. TypeScript入门-高级类型

    高级类型 交叉类型 交叉类型,就是将多个类型合并为一个新的类型,这个新的类型具有这多个类型的成员,含有这几个类型的所有特性,是他们的综合体,像是集合的并集 例子: function extend< ...

  7. 关于IT创业和反思

    2016年8月的某一天本是世上平凡的一天,对于我而言却并不平凡. 这一天,我离开了待了近四年的创业公司.从它成立前的筹备开始,伴随着它的起起伏伏到完成C轮融资,从来没想过以这种方式离开,然而人生总是充 ...

  8. 基于三层交换机和基于路由子接口的vlan间路由

    1:通过三层交换机实现vlan间的通信:为三层交换机创建vlan,设置交换机的两个SVI,并配置IP地址. (在二层交换机上只能配置一个SVI端口,用来实现交换机交换机远程管理,在三层交换机上可以配置 ...

  9. Telegram学习解析系列(一):认识一下Telegram的源码

    前言: Telegram不知道有多少同行听过这玩意,或者在看它的源码.我是出于工作原因才接触到这东西,看的真是的......变方了!一个月估计刚刚找到门,还没进去多深,把自己的心得和对源码的认识以及我 ...

  10. [刷题]算法竞赛入门经典(第2版) 6-9/UVa127 - "Accordian" Patience

    题意:52张牌排一行,一旦出现任何一张牌与它左边的第一张或第三张"匹配",即花色或点数相同,则须立即将其移动到那张牌上面,将其覆盖.能执行以上移动的只有压在最上面的牌.直到最后没有 ...