简述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;
        }
      }
目录
相关文章
|
10天前
|
存储 Java 程序员
Java的基础概念一
### Java编程基础简介 #### 一、注释 注释用于解释代码,不会参与编译和运行。Java支持三种注释: - **单行注释**:以 `//` 开头。 - **多行注释**:以 `/* ... */` 包围。 - **文档注释**:通常用于生成开发文档。 #### 二、关键字 关键字是被Java赋予特定含义的英文单词,全部小写,且在代码编辑器中有特殊颜色标记。常用的如 `class` 表示定义一个类。
Java的基础概念一
|
9天前
|
移动开发 前端开发 Java
Java最新图形化界面开发技术——JavaFx教程(含UI控件用法介绍、属性绑定、事件监听、FXML)
JavaFX是Java的下一代图形用户界面工具包。JavaFX是一组图形和媒体API,我们可以用它们来创建和部署富客户端应用程序。 JavaFX允许开发人员快速构建丰富的跨平台应用程序,允许开发人员在单个编程接口中组合图形,动画和UI控件。本文详细介绍了JavaFx的常见用法,相信读完本教程你一定有所收获!
Java最新图形化界面开发技术——JavaFx教程(含UI控件用法介绍、属性绑定、事件监听、FXML)
|
24天前
|
存储 Java 开发者
什么是java的Compact Strings特性,什么情况下使用
Java 9引入了紧凑字符串特性,优化了字符串的内存使用。它通过将字符串从UTF-16字符数组改为字节数组存储,根据内容选择更节省内存的编码方式,通常能节省10%至15%的内存。
|
1月前
|
存储 Java 数据挖掘
Java 8 新特性之 Stream API:函数式编程风格的数据处理范式
Java 8 引入的 Stream API 提供了一种新的数据处理方式,支持函数式编程风格,能够高效、简洁地处理集合数据,实现过滤、映射、聚合等操作。
57 6
|
2月前
|
分布式计算 Java API
Java 8引入了流处理和函数式编程两大新特性
Java 8引入了流处理和函数式编程两大新特性。流处理提供了一种声明式的数据处理方式,使代码更简洁易读;函数式编程通过Lambda表达式和函数式接口,简化了代码书写,提高了灵活性。此外,Java 8还引入了Optional类、新的日期时间API等,进一步增强了编程能力。这些新特性使开发者能够编写更高效、更清晰的代码。
37 4
|
2月前
|
算法 Java 数据库连接
Java连接池技术,从基础概念出发,解析了连接池的工作原理及其重要性
本文详细介绍了Java连接池技术,从基础概念出发,解析了连接池的工作原理及其重要性。连接池通过复用数据库连接,显著提升了应用的性能和稳定性。文章还展示了使用HikariCP连接池的示例代码,帮助读者更好地理解和应用这一技术。
63 1
|
3月前
|
存储 安全 Java
深入理解Java中的FutureTask:用法和原理
【10月更文挑战第28天】`FutureTask` 是 Java 中 `java.util.concurrent` 包下的一个类,实现了 `RunnableFuture` 接口,支持异步计算和结果获取。它可以作为 `Runnable` 被线程执行,同时通过 `Future` 接口获取计算结果。`FutureTask` 可以基于 `Callable` 或 `Runnable` 创建,常用于多线程环境中执行耗时任务,避免阻塞主线程。任务结果可通过 `get` 方法获取,支持阻塞和非阻塞方式。内部使用 AQS 实现同步机制,确保线程安全。
145 3
|
存储 并行计算 Java
Java8特性大全(最新版)
Java8特性大全(最新版)
|
8天前
|
Java
Java—多线程实现生产消费者
本文介绍了多线程实现生产消费者模式的三个版本。Version1包含四个类:`Producer`(生产者)、`Consumer`(消费者)、`Resource`(公共资源)和`TestMain`(测试类)。通过`synchronized`和`wait/notify`机制控制线程同步,但存在多个生产者或消费者时可能出现多次生产和消费的问题。 Version2将`if`改为`while`,解决了多次生产和消费的问题,但仍可能因`notify()`随机唤醒线程而导致死锁。因此,引入了`notifyAll()`来唤醒所有等待线程,但这会带来性能问题。
Java—多线程实现生产消费者
|
10天前
|
安全 Java Kotlin
Java多线程——synchronized、volatile 保障可见性
Java多线程中,`synchronized` 和 `volatile` 关键字用于保障可见性。`synchronized` 保证原子性、可见性和有序性,通过锁机制确保线程安全;`volatile` 仅保证可见性和有序性,不保证原子性。代码示例展示了如何使用 `synchronized` 和 `volatile` 解决主线程无法感知子线程修改共享变量的问题。总结:`volatile` 确保不同线程对共享变量操作的可见性,使一个线程修改后,其他线程能立即看到最新值。