java学习面向对象之封装
在以往几节当中我们讲到了什么是类,类就是对一类事物的描述,比如现在我们有一个人类
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学习面向对象之封装的更多相关文章
- java学习面向对象之异常之一
一.异常的概述: 什么是异常?在我们编写java程序的时候,会出现一些问题,比如内存溢出啊或者数组索引超出最大索引啊,这些编程当中出现的这些个问题就是异常.但是异常也分为可以处理的和不可以处理的.比如 ...
- Java学习---面向对象的远程方法调用[RMI]
基础知识 分布式计算是一门计算机科学,它研究如何把一个需要非常巨大的计算能力才能解决的问题分成许多小的部分,然后把这些部分分配给许多计算机进行处理,最后把这些计算结果综合起来得到最终的结果. 常见的分 ...
- java学习--面向对象
对象及类的概念 对象是java程序的核心,在java程序中“万事万物皆对象” 对象可以看成是属性和方法的封装体 类是用来创建同一类型的对象的模板,在一个类中定义了该类对象所应具有的属性和方法 J2SD ...
- 【Java】面向对象之封装
面向对象编程是对客观世界的模拟,客观世界里成员变量都是隐藏在对象内部的,外界无法直接操作和修改.封装可以被认为是一个保护屏障,防止该类的代码和数据被其他类随意访问.要访问该类的数据,必须通过指定的方式 ...
- Java学习 面向对象(下)——Java疯狂讲义th4
面向对象(下) [TOC] 包装类 通过包装类可以把8个基本类型的值包装成对象使用. 自动拆箱.自动装箱 把字符串类型值转换成基本类型的值: 包装类的 parseXxx(String s)静态方法 包 ...
- Java入门 - 面向对象 - 05.封装
原文地址:http://www.work100.net/training/java-encapsulation.html 更多教程:光束云 - 免费课程 封装 序号 文内章节 视频 1 概述 2 封装 ...
- java学习面向对象之匿名内部类
之前我们提到“匿名”这个字眼的时候,是在学习new对象的时候,创建匿名对象的时候用到的,之所以说是匿名,是因为直接创建对象,而没有把这个对象赋值给某个值,才称之为匿名. 匿名对象回顾: class N ...
- java学习面向对象之内部类
什么是面向对象内部类呢?所谓的内部类,即从字面意义上来理解的话,就是把类放到类当中. 那么内部类都有什么特点呢? 1.内部类可以访问包裹他的类的成员. 2.如果包裹他的类想访问被其包裹的类的话就得实例 ...
- java学习面向对象之多态
如何理解多态,让我们举个例子来描述一下,因为单纯的说多态大家可能不理解: abstract class Animal { ; abstract void eat(); public void run( ...
随机推荐
- 计算机体系结构-内存调优IPC OOMK
man ipc [root@server1 proc]# man ipcIPC(2) Linux Programmer’s Manual ...
- valgrind 打印程序调用树+进行多线程性能分析
使用valgrind的callgrind工具进行多线程性能分析 yum install valgrind / wget http://valgrind.org/downloads/valgrind-3 ...
- Qt 学习之路:QML 和 QtQuick 2
前面我们已经了解了 Qt 的一部分内容.这部分内容全部集中在 C++ 方面.也就是说,至今为止我们的程序都是使用 C++ 语言完成的.这在 Qt 5 之前的版本中是唯一的途径.不过,自从 Qt 5 开 ...
- Java SE 6 新特性: 编译器 API
新 API 功能简介 JDK 6 提供了在运行时调用编译器的 API,后面我们将假设把此 API 应用在 JSP 技术中.在传统的 JSP 技术中,服务器处理 JSP 通常需要进行下面 6 个步骤: ...
- CentOS+Nginx+PHP+MySQL详细配置(图解)
原文地址: http://www.jb51.net/article/26597.htm CentOS+Nginx+PHP+MySQL详细配置(带有图解),需要的朋友可以参考下. 一.安装MySQL ...
- Bash关闭输出(关闭正确、错误输出)
利用&>重定向,不输出任何内容: echo hello &> /dev/null 关闭正确输出: echo hello 1> /dev/null 关闭错误输出: ec ...
- noip 2003 传染病控制(历史遗留问题2333)
/*codevs 1091 搜索 几个月之前写的70分 今天又写了一遍 并且找到了错误 */ #include<cstdio> #include<vector> #define ...
- hdu 3450 Counting Sequences
/* n*n暴力 这个很好想 */ #include<cstdio> #define maxn 100010 #define mod 9901 using namespace std; i ...
- 一次利用MSSQL的SA账户提权获取服务器权限
遇到小人,把服务器整走了 自己手里只有sql server的sa账号密码 模糊记起之前用这个账户提权读取文件的事 百度之,发现相关信息一堆堆 各种工具也用了不少 发现不是语法错误就是权限不够 无奈之下 ...
- mac 下安装安卓模拟器
mac下的安卓模拟器——bluestacks 下载:http://pan.baidu.com/s/1kVvZyYz 该安卓模拟器除了能网络下载apk,本地还能安装apk,但是与win版不同,安装不是那 ...