在以往几节当中我们讲到了什么是类,类就是对一类事物的描述,比如现在我们有一个人类

class Person
{ /**
*这里我们分别在name和age上加上了元素的访问权限
*这里的private是指,这个变量只能被当前类访问,其他的地方是没法访问到的,即使是当前类的一个实例化对象
*也是没法访问的。那么这里就有一个问题了,我们定义了一个成员变量确没法访问:
*这里举一个详细的例子来讲:
*我们有一个房子,房子里面放了很多的钱,我们的房子有一个门。在我们没有给这个门加任何的限制的时候,任何人
*都是可以进出的,也就是说他默认的就是public修饰符,这样是不是很危险呢?此时为了安全期间,我们就用墙把这
*个门给堵上了,这样就又出现了一个问题,我们没法取钱啊,我们再换一种方式,我们给这个门加上一把锁,这样
*我们就可以即能限定出入这个对象的人,同时也让我们能够取钱。
*承接上面的描述,现在我们有一把锁,想要进去,是不是得有一把钥匙才可以啊,只要有这把钥匙我们就能够进去
*这个就需要一个公开的成员方法来判断进来的人是好人还是坏人,因为我们之前讲的语句,如if swith等等只能在函数
*当中存在,其他地方他的存在是不合法的
*综上所述,便就是封装
*/ private String name;
private int age;
/**
*既然定义了私有成员变量,那么接下来我们来定义一个公开的访问方法才可以,同时这个公开的方法当中有能够起限定作
*用的代码段
*/
public void setAge(int n)
{
/**限制n的范围,防止破坏我们已经封装好了的合理的对象*/
if(n>0&&n<100)
age = n;
else
System.out.print("非法的年龄数值,请检查您的输入是否有误"); } public int getAge()
{ return age; } void speak()
{ System.out.print(name+"....."+age); } } class PersonDemo
{ public static void main(String[] args) {
Person p = new Person();
//p.age = 10;
//p.age = -10;显然这种定义方式是不正确的,因为他违背了我们正确描述事物的原则
/**
*这里我们为了保护我们的数据是在合法范围之内的,就需要界定他的访问权限,让他的值
*在我们的控制范围之内,这个便就是封装
*/
/**
*在启用封装之后,我们就来调用相关的方法
*/
p.setAge(10);//合法赋值
p.setAge(-333);//非法赋值
p.speak();
} }

讲了那么多:那么封装的好处在什么地方呢?

封装的定义:封装是指,隐藏对象的属性还有实现细节,仅对外提供公共的访问方式。

但是需要注意的一点是,私有化仅是体现封装的一种方式而已。

封装的好处:

1、将变化隔离;2、便于使用;3、提高重用性;4、提高安全性。

封装的原则:

1、将不需要对外提供的内容都隐藏起来

2、将属性都隐藏起来,提供公共方法对其访问。

java学习面向对象之封装的更多相关文章

  1. java学习面向对象之异常之一

    一.异常的概述: 什么是异常?在我们编写java程序的时候,会出现一些问题,比如内存溢出啊或者数组索引超出最大索引啊,这些编程当中出现的这些个问题就是异常.但是异常也分为可以处理的和不可以处理的.比如 ...

  2. Java学习---面向对象的远程方法调用[RMI]

    基础知识 分布式计算是一门计算机科学,它研究如何把一个需要非常巨大的计算能力才能解决的问题分成许多小的部分,然后把这些部分分配给许多计算机进行处理,最后把这些计算结果综合起来得到最终的结果. 常见的分 ...

  3. java学习--面向对象

    对象及类的概念 对象是java程序的核心,在java程序中“万事万物皆对象” 对象可以看成是属性和方法的封装体 类是用来创建同一类型的对象的模板,在一个类中定义了该类对象所应具有的属性和方法 J2SD ...

  4. 【Java】面向对象之封装

    面向对象编程是对客观世界的模拟,客观世界里成员变量都是隐藏在对象内部的,外界无法直接操作和修改.封装可以被认为是一个保护屏障,防止该类的代码和数据被其他类随意访问.要访问该类的数据,必须通过指定的方式 ...

  5. Java学习 面向对象(下)——Java疯狂讲义th4

    面向对象(下) [TOC] 包装类 通过包装类可以把8个基本类型的值包装成对象使用. 自动拆箱.自动装箱 把字符串类型值转换成基本类型的值: 包装类的 parseXxx(String s)静态方法 包 ...

  6. Java入门 - 面向对象 - 05.封装

    原文地址:http://www.work100.net/training/java-encapsulation.html 更多教程:光束云 - 免费课程 封装 序号 文内章节 视频 1 概述 2 封装 ...

  7. java学习面向对象之匿名内部类

    之前我们提到“匿名”这个字眼的时候,是在学习new对象的时候,创建匿名对象的时候用到的,之所以说是匿名,是因为直接创建对象,而没有把这个对象赋值给某个值,才称之为匿名. 匿名对象回顾: class N ...

  8. java学习面向对象之内部类

    什么是面向对象内部类呢?所谓的内部类,即从字面意义上来理解的话,就是把类放到类当中. 那么内部类都有什么特点呢? 1.内部类可以访问包裹他的类的成员. 2.如果包裹他的类想访问被其包裹的类的话就得实例 ...

  9. java学习面向对象之多态

    如何理解多态,让我们举个例子来描述一下,因为单纯的说多态大家可能不理解: abstract class Animal { ; abstract void eat(); public void run( ...

随机推荐

  1. RHCA-RH442-Linux系统性能调优 (学习)

    RHCA-RH442-Linux系统性能调优

  2. [转] 函数编程之闭包漫谈(Closure)

    在函数编程中经常用到闭包.闭包是什么,它是怎么产生的及用来解决什么问题呢.给出字面的定义 先:闭包是由函数及其相关的引用环境组合而成的实体(即:闭包=函数+引用环境).这个从字面上很难理解,特别对于一 ...

  3. Some code changes cannot be hot swapped into a running virtual machine,

    翻译一下:不能热交换到运行虚拟机,一些代码变化不能热交换到运行虚拟机,如更改名称或介绍的方法错误运行代码.解决方法:增加.删除类文件或者在一个类中增加.删除方法时,是不能够热部署到服务上的.这时候需要 ...

  4. python下载IGS观测数据

    最近在学习GPS数据软件处理,经常需要下载数据练习,反复去网站上很麻烦,于是就写了一个小小的爬虫,用的是韩国的服务器,使用了python中的ftplib库实现的 今天稍微改了一下代码,可以选择卫星系统 ...

  5. codevs 2822爱在心中

    不想吐槽题目.... /* K bulabula 算法(好像用哪个T bulabula更简单 然而我并不会 - -) 丑陋的处理cnt: Printf时 cnt中 ans[i][0]==1 的删掉 然 ...

  6. 使用ListView 时,遇到了 Your content must have a ListView whose id attribute is 'android.R.id.list' 错误

    今天在开发Android小应用的时候,使用到了ListView,在使用自己创建的listview风格的时候,就出现了如标题的错误提示信息,这个就让我纳闷了,以前也不会出现这个问题啊,而且也可以运行,赶 ...

  7. OSI 网络七层模型(笔记)

    一直以来我们都在使用着互联网,每天聊着qq,上着淘宝,但是却不了解怎么运行的呢,充满了好奇.今天同过了解来总结一下OSI网络七层模型: 上一张图 OSI (open system interconne ...

  8. opencv有关错误及解决办法

    1.载入图片时内存溢出情况,如图: 分析及解决办法:因为载入的图片太大,导致内存溢出.所以更换小一点的图片就行了. 2.

  9. 24种设计模式--工厂方法模式【Factory Method Pattern】

    女娲补天的故事大家都听说过吧,今天不说这个,说女娲创造人的故事,可不是“造人”的工作,这个词被现代人滥用了. 这个故事是说,女娲在补了天后,下到凡间一看,哇塞,风景太优美了,天空是湛蓝的,水是清澈的, ...

  10. ARM平台的内核模块编写与安装

       Linux 系统一直在不断地发展,而相应地她的代码量也在不断的增大,直接导致的结果就是她的可执行镜像就变得越来越庞大.那么问题来了,如果将所有的镜像文件一次性地复制到内存中,那么所需的空间就非常 ...