Java总结(一):封装——Encapsulation
官方定义:一种将抽象性函式接口的实作细节部份包装、隐藏起来的方法。封装可以被认为是一个保护屏障,防止该类的代码和数
据被外部类定义的代码随机访问。
大白话定义:通过getter和setter方法访问私有的在成员变量。
功能:
1、更容易修改自己的实现代码,而不用修改那些调用我们代码的程序片段。
2、可以对成员变量进行更精确的控制。
例子:
1、更容易修改自己的实现代码,而不用修改那些调用我们代码的程序片段。
eg. 把下列age类型从 int 改成 String。
class Husband{
public int age; // public
public String name;
} class Wife{
private int age; // private
private String name; void setAge(int age){
this.age = age;
} void setName(String name){
this.name = name;
} int getAge(){
return age;
} String getName(){
return name;
} } public class TestEncapsulation {
public static void main(String[] args) {
Husband h1 = new Husband();
h1.age = 21;
h1.name = "a1"; Husband h2 = new Husband();
h2.age = 22;
h2.name = "a2"; Wife w1 = new Wife();
w1.setAge(18);
w1.getAge(); Wife w2 = new Wife();
w2.setAge(19);
w2.getAge(); System.out.println(h1.age);
System.out.println(w2.getAge()); }
}
改:Husband 类 要改外设调用程序;Wife 类需内改动。同时,假设有100个Husband对象和100个Wife对象,显然改Wife 类要容易。
1 class Husband{
2 public String age; // 改成 String
3 public String name;
4 }
5
6 class Wife{
7 private String age; // 改成 String
8 private String name;
9
10 void setAge(int age){
11 this.age = String.valueOf(age);
12 }
13
14 void setName(String name){
15 this.name = name;
16 }
17
18 String getAge(){ // 改成 String
19 return age;
20 }
21
22 String getName(){
23 return name;
24 }
25
26 }
27
28
29 public class TestEncapsulation {
30 public static void main(String[] args) {
31 Husband h1 = new Husband();
32 h1.age = “21”; // 改调用程序
33 h1.name = "a1";
34
35 Husband h2 = new Husband();
36 h2.age = "22";
37 h2.name = "a2";
38
39
40 Wife w1 = new Wife();
41 w1.setAge(18);
42 w1.getAge();
43
44 Wife w2 = new Wife();
45 w2.setAge(19);
46 w2.getAge();
47
48
49
50 System.out.println(h1.age);
51 System.out.println(w2.getAge());
52
53 }
54 }
2、可以对成员变量进行更精确的控制。
eg. 对于Husband类的 age 属性可能会误操作成
Husband h1 = new Husband();
h1.age = ; // hi.age = -20;
h1.name = "a1";
可以通过setter方法来避免这类错误
void setAge(int age){
if(age<0||age>120){
System.out.println("age is wrong!");
}else{
this.age = age;
}
}
Java总结(一):封装——Encapsulation的更多相关文章
- java面向对象之 封装 Encapsulation
什么是封装:对象中的成员该隐藏的隐藏.该公开的要公开 封装:顾名思义,隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读和修改的访问级别:将抽象得到的数据和行为(或功能)相结合,形成一个有 ...
- Java基础-面向对象第一特性之封装(Encapsulation)
Java基础-面向对象第一特性之封装(Encapsulation) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.理解什么是面向过程和面向对象 面向过程与面向对象都是我们编程中 ...
- Java方法的封装
类的封装性即不能让外面的类随意修改一个类的成员变量: 在定义一个类的成员(包括变量和方法),使用private关键字说明这个成员的访问权限,只能被这个类的其他成员方法调用,而不能被其他的类中的方法所调 ...
- java类的封装、继承、多态
一.封装(encapsulation) 封装性就是把类(对象)的属性和行为结合成一个独立的相同单位,并尽可能隐蔽类(对象)的内部细节,对外形成一个边界,只保留有限的对外接口使之与外部发生联系.封装的特 ...
- Java基础04 封装与接口
作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 总结之前的内容,对象(object)指代某一事物,类(class)指代象的类型.对 ...
- Java面向对象(封装性概论)
Java面向对象(封装性概论) 知识概要: (1)面向对象概念 (2)类与对象的关系 (3)封装 (4)构造函数 (5)this关键字 (6)static关键 ...
- Java基础04 封装与接口(转载)
数据成员和方法都是同时开放给内部和外部的.在对象内部,我们利用this来调用对象的数据成员和方法.在对象外部,比如当我们在另一个类中调用对象的时,可以使用 对象.数据成员 和 对象.方法() 来调用对 ...
- java之类的封装
类和对象成员变量,成员函数特殊的成员变量和成员函数 函数重载 构造函数 静态变量 静态函数面向对象:封装 继承 多态封装 Encapsulation为什么需要封装?外界无法直接操作对象的具体的属性(安 ...
- Java基础之封装
封装(Encapsulation)是java面向对象的三大特性,之前学java迷迷糊糊,一直也没弄清楚什么是封装以及为什么要封装,直到这次看书才有一种被点醒的感觉. java中的封装是针对某个类而言的 ...
- 面向对象第一个特征-封装(Encapsulation)
面向对象第一个特征-封装(Encapsulation) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.封装概述(Encapsulation) 1>.什么是封装 是指隐藏对 ...
随机推荐
- git在windows命令行下使用
“不是内部或外部命令,也不是可运行的程序”,通常要将程序的exe路径配置环境变量. 将git的bin目录的路径添加到环境变量path中即可.
- jquery ajax 提交 FormData
$('form').submit(function(){ var formdata=new FormData(this); $.ajax({ type:'POST', url:'/url/path', ...
- SQLServer中获取特定表的所有列名
1.获取特定表的所有列名: Select Name FROM SysColumns Where id=Object_Id('tableName') 参考:http://blog.csdn.net/wu ...
- [CentOS]添加删除用户
摘要 在安装CentOS的时候,我们只设置了root,类似windows的超级管理员.当然我们在工作的时候,为了安全考虑,不可能对外开发root,一方面是从安全的角度,另一方面也是方便管理. 添加删除 ...
- javascript 之Object内置对象
Object.defineProperty(obj, prop, descriptor)
- css3实现渐变的iPhone滑动解锁效果
先贴代码 <!DOCTYPE html> <html> <head> <style> p{ width:50%; margin:0 auto; line ...
- 导入excel错误:外部表不是预期的格式 解决方案
环境:win7+iis7+Office2007 在asp.net网站中导出Excel文件后,再把文件导入到数据库中. 读取Excel文件时,打开连接出错. 错误为:外部表不是预期的格式 解决:检查了一 ...
- thinkphp学习笔记13-15集
13集: ThinkPHP3.1.3使用视频教程--后台登录验证与自动运行方法_标清.flv 14集: ThinkPHP3.1.3使用视频教程--自定义SESSION处理DB驱动与添加Redis处理驱 ...
- R You Ready?——大数据时代下优雅、卓越的统计分析及绘图环境
作者按:本文根据去年11月份CSDN举办的“大数据技术大会”演讲材料整理,最初发表于2012年2月期<程序员>杂志. 0 R 的安装
- html5手机常见问题与工具分享
mobileTech A useful tools or tips list for mobile web application developing 这个项目收集移动端开发所需要的一些资源与小技巧 ...