Java总结(一):封装——Encapsulation

官方定义:一种将抽象性函式接口的实作细节部份包装、隐藏起来的方法。封装可以被认为是一个保护屏障,防止该类的代码和数
据被外部类定义的代码随机访问。

大白话定义:通过getter和setter方法访问私有的在成员变量。

功能:
1、更容易修改自己的实现代码,而不用修改那些调用我们代码的程序片段。
eg. 把下列age类型从 int 改成 String。

 1 class Husband{
 2   public int age;
 3   public String name;
 4 }
 5
 6 class Wife{
 7   private int age;
 8   private String name;
 9
10   void setAge(int age){
11     this.age = age;
12   }
13
14   void setName(String name){
15     this.name = name;
16   }
17
18   int getAge(){
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 }

改: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 }
时间: 2024-10-02 05:21:51

Java总结(一):封装——Encapsulation的相关文章

java之类的封装

类和对象成员变量,成员函数特殊的成员变量和成员函数 函数重载 构造函数 静态变量 静态函数面向对象:封装 继承 多态封装 Encapsulation为什么需要封装?外界无法直接操作对象的具体的属性(安全性)核心思想:将安全性要求较高的成员变量定义为私有的,对他们的操作通过成员函数来进行,对其操作的条件在成员函数中定义 ---管理类的方法:包(package)(1)可以将类放到包里面,在类的文件头上注明包的路径.package 包名;Customer类放到bank包中可以大包里面含有小包,定义包时

Java基础04 封装与接口(转载)

数据成员和方法都是同时开放给内部和外部的.在对象内部,我们利用this来调用对象的数据成员和方法.在对象外部,比如当我们在另一个类中调用对象的时,可以使用 对象.数据成员 和 对象.方法() 来调用对象的数据成员和方法. 我们将要封装(encapsulation)对象的成员(成员包括数据成员和方法),从而只允许从外部调用部分的成员.利用封装,我们可以提高对象的易用性和安全性. 封装与接口 封装(encapsulation)是计算机常见的术语,即保留有限的外部接口(interface),隐藏具体实

Java基础04 封装与接口

作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 总结之前的内容,对象(object)指代某一事物,类(class)指代象的类型.对象可以有状态和动作,即数据成员和方法. 到现在为止,数据成员和方法都是同时开放给内部和外部的.在对象内部,我们利用this来调用对象的数据成员和方法.在对象外部,比如当我们在另一个类中调用对象的时,可以使用 对象.数据成员 和 对象.方法() 来调用对象的数据成员和方法. 我们将要封装(encaps

【Java基础04】 Java隐藏和封装、类的继承、多态

1 隐藏和封装 1.1 封装 Encapsulation 封装指的是将对象的状态信息隐藏在对象内部,不允许外部程序直接访问对象内部信息,而是通过该类所提供的方法来实现对内部信息的操作和访问. 封装实现的目的如下: (1)隐藏类的实现细节. (2)让使用者只能通过实现预定的方法来访问数据,限制成员变量的不合理访问. (3)能进行数据检查,有利于保证对象信息的完整性. (4)便于修改,提高代码的可维护性. 良好的封装应该从两方面考虑: (1)将对象的成员变量和实现细节隐藏起来,不允许外部直接访问.

【java下午茶系列】java三重奏之封装

java中的封装.继承.多态可谓是踏入这一行业的必经之槛,诸多新人在不明就里的情况下将其各种概念背的是滚瓜烂熟.即便是工作多年之后,也不见得能说出个所以然,或许冥冥之中已经写过无数封装的代码,只是近在眼前人不识了.也正是鉴于此,趁着有所心得,螃蟹留个印记,供大家分享与指正. 既然作为一个安全系数很高的编程语言,内部结构及权限分配必然有着独到之处,就像是初来乍到就碰到的private.public.protected,一头雾水,虽然用几分钟时间弄的很明白,但以后的很长时间都是处于混乱状态,直到有一

利用Java针对MySql封装的jdbc框架类 JdbcUtils 完整实现(包含增删改查、JavaBean反射原理,附源码)

最近看老罗的视频,跟着完成了利用Java操作MySql数据库的一个框架类JdbcUtils.java,完成对数据库的增删改查.其中查询这块,包括普通的查询和利用反射完成的查询,主要包括以下几个函数接口: 1.public Connection getConnection()   获得数据库的连接 2.public boolean updateByPreparedStatement(String sql, List<Object>params)throws SQLException  更新数据库

学java教程之封装

学编程吧学java教程之封装发布了,欢迎大家通过xuebiancheng8.com来访问 下面来分析面向对象中的封装,什么是封装呢.先来段代码 public class Person{ String username; int age; } Person p = new Person(); p.username="张三"; p.age=-10; 上面实例化了一个Person对象p,然后赋值,这里我们将年龄的值赋值成了-10,这里很明显是不正确的,因为年龄不能为负的,那怎么办呢,这里我们

java反射+java泛型,封装BaseDaoUtil类。供应多个不同Dao使用

当项目是ssh框架时,每一个Action会对应一个Service和一个Dao.但是所有的Ation对应的Dao中的方法是相同的,只是要查的表不一样.由于封装的思想,为了提高代码的重用性.可以使用java中的泛型+反射去实现最终的封装,将所有的Dao层的共同部分写一个BaseDaoUtil.而所有的Dao都继承这个类. 思路: ----->(1)反射+泛型 ----->(2)当生成子类对象(UserDao),调用空构造时(new UserDao()),子类的空构造会默认调用父类的空构造器(new

java spring 简单封装出自己的DAO Service实现

package com.jade.basung.bss.module.common; import com.jade.framework.base.criterion.Criteria; import com.jade.framework.base.util.PagingList; import com.jade.basung.bss.BaseException; /** * dao层公共接口 * * @date 15/8/28 下午5:23 * @version 1.0 */ public i