简述java三大特性中的封装的概念及用法

简介: 简述java三大特性中的封装的概念及用法

面向对象的三大特性分别是封装、继承、多态。


封装是指:对象的外部对对象的 内部起到保护的作用,也称为数据隐藏。内对外也没有影响

封装就是把对象的属性和操作(或服务)结合为一个独立的整体,并尽可能隐藏对象的内部实现细节


任何对象都要有一个明确的边界,


封装的实现:


Public 公开的,不受边界约束

Private 私有 只能在本类内部访问,无法突破边界

属性私有,提供公开的set()方法和get()方法来访问属性;

为什么要有set和get方法:

相当于开两个门,修改和获取两个门(门可控制开关);

如果设置成public,相当于全部公开,没有任何权限,谁都可以访问,而设置成私有的之后相当于设立一个门,可控制这个属性的值怎么获取;

方法公开

声明公开,实现隐藏;

实现的改变对架构的影响最小


例如下列程序中,银行卡密码如果不设置为私有变量的话那个谁都可以获取打密码并且进行修改,所以必须把密码设为私有变量,


但是私有变量只能在本类内部访问,无法突破边界,所以要想再获取找回密码并且修改应该怎么办呢?

所以就定义一个公开的get()和set()方法来供程序调用,相当于从public的没有边界到private 的封装边界中打开两个门,一个门是负责get()获取属性的值,另一个门set()方法设置属性的值;

例如下面的程序:

   public class fengz{
        //封装的实现
        public static void main(String[] args) {
          //例如创建一个银行卡
          Card card = new Card();
          //如果不定义私有变量,就可以从下面这句代码获取到password 的值
          //System.out.println(card.password);
          //private属性私有,提供公开的set()方法和get()方法来访问属性;
          System.out.println(card.getPassword());
          card.setPassword ("54321") ;
          System.out.println(card.getPassword());
        }
      }
      class  Card{
        //public String password = "abcdefg";
        private String password = "123546";
        //get 和 set  方法
        //方法私有,只能在本类中调用;    
        public String getPassword(){
          return password;
        }
        public void setPassword(String password){
          //使用set方法的好处,可控制这个属性的值怎么获取;例如果密码的长度不等于6位则返回;
          if (password.length!=6) {
            return; 
          }
          this.password= password;
        }
      }
目录
相关文章
|
27天前
|
存储 安全 Java
Java Map新玩法:探索HashMap和TreeMap的高级特性,让你的代码更强大!
【10月更文挑战第17天】Java Map新玩法:探索HashMap和TreeMap的高级特性,让你的代码更强大!
56 2
|
10天前
|
分布式计算 Java API
Java 8引入了流处理和函数式编程两大新特性
Java 8引入了流处理和函数式编程两大新特性。流处理提供了一种声明式的数据处理方式,使代码更简洁易读;函数式编程通过Lambda表达式和函数式接口,简化了代码书写,提高了灵活性。此外,Java 8还引入了Optional类、新的日期时间API等,进一步增强了编程能力。这些新特性使开发者能够编写更高效、更清晰的代码。
24 4
|
18天前
|
算法 Java 数据库连接
Java连接池技术,从基础概念出发,解析了连接池的工作原理及其重要性
本文详细介绍了Java连接池技术,从基础概念出发,解析了连接池的工作原理及其重要性。连接池通过复用数据库连接,显著提升了应用的性能和稳定性。文章还展示了使用HikariCP连接池的示例代码,帮助读者更好地理解和应用这一技术。
31 1
|
24天前
|
存储 安全 Java
深入理解Java中的FutureTask:用法和原理
【10月更文挑战第28天】`FutureTask` 是 Java 中 `java.util.concurrent` 包下的一个类,实现了 `RunnableFuture` 接口,支持异步计算和结果获取。它可以作为 `Runnable` 被线程执行,同时通过 `Future` 接口获取计算结果。`FutureTask` 可以基于 `Callable` 或 `Runnable` 创建,常用于多线程环境中执行耗时任务,避免阻塞主线程。任务结果可通过 `get` 方法获取,支持阻塞和非阻塞方式。内部使用 AQS 实现同步机制,确保线程安全。
|
25天前
|
存储 Java API
优雅地使用Java Map,通过掌握其高级特性和技巧,让代码更简洁。
【10月更文挑战第19天】本文介绍了如何优雅地使用Java Map,通过掌握其高级特性和技巧,让代码更简洁。内容包括Map的初始化、使用Stream API处理Map、利用merge方法、使用ComputeIfAbsent和ComputeIfPresent,以及Map的默认方法。这些技巧不仅提高了代码的可读性和维护性,还提升了开发效率。
47 3
|
25天前
|
存储 安全 Java
Java Map新玩法:深入探讨HashMap和TreeMap的高级特性
【10月更文挑战第19天】Java Map新玩法:深入探讨HashMap和TreeMap的高级特性,包括初始容量与加载因子的优化、高效的遍历方法、线程安全性处理以及TreeMap的自然排序、自定义排序、范围查询等功能,助你提升代码性能与灵活性。
24 2
|
Java
java学习第七天笔记-方法150-封装2方法使用
java学习第七天笔记-方法150-封装2方法使用
68 0
java学习第七天笔记-方法150-封装2方法使用
|
Java
java学习第六天笔记-方法129-综合联系-飞机票方法封装
java学习第六天笔记-方法129-综合联系-飞机票方法封装
59 0
java学习第六天笔记-方法129-综合联系-飞机票方法封装
|
Java
java学习第六天笔记-方法128-综合联系-飞机票方法封装
java学习第六天笔记-方法128-综合联系-飞机票方法封装
78 0
java学习第六天笔记-方法128-综合联系-飞机票方法封装