Java基础封装性

简介: Java基础封装性

封装的好处:


1.封装之后,对于那个事物来说,看不到这个事物比较复杂的那一面,只能看到该事物简单的那一面。复杂性封装,对外提供简单的操作入口。照相机就是一个很好的封装的实例,照相机的实现原理非常复杂,但是对于使用照相机的人来说,操作起来是非常方便的是非常便捷的。还有像电视机也是封装的,电视机内存实现非常复杂,但是对使用者来说不需要关心内部的实现原理,只需要会操控遥控器就行。


2.封装之后才会形成真正的“对象”真正的“独立体”


3.封装就意味着以后的程序可以重复使用。并且这个事物应该适应性比较强,在任何场合都可以使用


4.封装之后,对于事物本身,提高了安全性【安全级别高】


未封装的示例代码01:


class User {
  int age;
}
/**
 * 用户测试类
 * 
 * 对于当前程序来说:
 * User类中的age属性在外部程序中可以随意访问,导致age属性的不安全。
 * 一个User对象表示一个用户,用户的年龄不可能为负数,以下程序当中年龄值
 * 为负数,程序运行的时候并没有报错,这是当前程序存在的缺陷。
 * */
public class UserTest{
  public static void main(String[] args){
    //创建User对象 
    User user = new User();
    //访问age
    //读取年龄值【get】
    System.out.println("该用户的年龄为: " + user.age);
    //修改年龄值【set】
    user.age = 20;
    //读取年龄值【get】
    System.out.println("该用户的年龄为: " + user.age);
    //这里的age属性显然是完全暴露给外部程序的,对于程序员来说可以操作User对象当中的所有的
    //细节,导致User中部分数据不安全。
    //不建议这样,建议User类型进行封装,建议在外部程序中不能随意访问User对象当中的属性。这样
    //可以保证属性的安全
    user.age = -100;
    System.out.println("该用户的年龄为: " + user.age);
}
}


封装的步骤:


1.所有的属性私有化,使用private关键字进行修饰,private表示私有的,修饰的所有数据只能在本类中访问。


2.对外提供简单的操作入口,也就是说以后外部程序要想访问set属性,必须通过这些简单的入口进行访问:


对外提供两种公开的方法,分别是set和get方法


想修改age的属性,调用set方法


想读取age的属性,调用get方法


setter and getter方法没有static关键字


3.set方法的命名规范


public void setAge(int n){
age = a


4.get方法的命名规范:


public int getAge(){
return;
}


一个属性通常访问的时候包括几种访问形式?


-第一种方式:想读取这个属性的值,读取get


-第二种方式:想修改这个属性的值,修改set


setter and getter方法没有static关键字


有static关键字修饰事物方法怎么调用:类名.方法名(实参);


没有static关键字修饰的方法怎么调用:引用.方法名(实参);


封装的示例代码02:


lass User {
  //属性私有化
  private int age;
  //set方法没有返回值,因为set方法只负责修改数据
  /*
    public void setAge(int n){
     age = age;//java有就近原则,这里其实并没有给age属性赋值,这里的age都是局部变量
    }
   */
  //setter
  public void setAge(int a){
    //编写业务逻辑代码进行安全控制
    if(a < 0 || a > 150){
      System.out.println("对不起你提供的年龄不合法!");
      return;
    }
    age = a;
  }
  //getter
  public int getAge(){
    return age;
  }
}
public class UserTest {
  public static void main(String[] args) {
    //创建User对象
    User user = new User();
    //编译报错,age属性私有化,在外部程序中不能直接访问
    //从此之后age的属性非常的安全,但是有点太安全了
    //对于目前的程序来说,age属性彻底在外部访问不到
    //修改
    user.setAge(-100);
        //读取
    System.out.println(user.getAge());
  }
}
相关文章
|
4月前
|
Java 数据库连接 数据库
Java 组件详细使用方法与封装实战指南
本指南详解Java核心组件使用与封装技巧,涵盖跨平台开发、面向对象编程、多线程、数据库操作等关键内容,并提供工具类、连接池、异常及响应结果的封装方法。结合Spring框架、MyBatis、Spring Boot等主流技术,助你掌握高质量Java组件设计与开发实践。
182 2
|
17天前
|
Java 数据安全/隐私保护
在Java中,如何实现封装?
Java封装通过`private`隐藏属性,`public`暴露getter/setter方法,结合访问修饰符控制成员访问权限,实现数据安全与代码解耦,提升程序可维护性。
127 2
|
7月前
|
人工智能 JSON Java
列表结构与树结构转换分析与工具类封装(java版)
本文介绍了将线性列表转换为树形结构的实现方法及工具类封装。核心思路是先获取所有根节点,将其余节点作为子节点,通过递归构建每个根节点的子节点。关键在于节点需包含 `id`、`parentId` 和 `children` 三个属性。文中提供了两种封装方式:一是基于基类 `BaseTree` 的通用工具类,二是使用函数式接口实现更灵活的方式。推荐使用后者,因其避免了继承限制,更具扩展性。代码示例中使用了 Jackson 库进行 JSON 格式化输出,便于结果展示。最后总结指出,理解原理是进一步优化和封装的基础。
230 0
|
8月前
|
安全 Java 开发者
【JAVA】封装多线程原理
Java 中的多线程封装旨在简化使用、提高安全性和增强可维护性。通过抽象和隐藏底层细节,提供简洁接口。常见封装方式包括基于 Runnable 和 Callable 接口的任务封装,以及线程池的封装。Runnable 适用于无返回值任务,Callable 支持有返回值任务。线程池(如 ExecutorService)则用于管理和复用线程,减少性能开销。示例代码展示了如何实现这些封装,使多线程编程更加高效和安全。
|
8月前
|
安全 网络协议 Java
Java网络编程封装
Java网络编程封装原理旨在隐藏底层通信细节,提供简洁、安全的高层接口。通过简化开发、提高安全性和增强可维护性,封装使开发者能更高效地进行网络应用开发。常见的封装层次包括套接字层(如Socket和ServerSocket类),以及更高层次的HTTP请求封装(如RestTemplate)。示例代码展示了如何使用RestTemplate简化HTTP请求的发送与处理,确保代码清晰易维护。
|
9月前
|
Java
Java 面向对象编程的三大法宝:封装、继承与多态
本文介绍了Java面向对象编程中的三大核心概念:封装、继承和多态。
484 15
|
安全 Java 编译器
Java的封装详解
封装和多态是面向对象编程(OOP)的重要概念。封装通过私有属性和公共方法实现数据隐藏和保护,使类的内部细节对外部不可见;多态则通过方法重载和重写实现同一方法在不同对象上的不同表现形式,增强了代码的灵活性和可维护性。两者结合使用,可以使Java程序更加安全、灵活且易于维护。
338 82
|
Java
Java的封装详解
封装是Java中实现数据隐藏和保护的核心机制。它通过将对象的状态和行为结合并限制外部直接访问,确保类的内部细节对外不可见,仅能通过公共方法访问和修改对象状态。封装带来了数据隐藏、提高代码可维护性和增强安全性等好处。在Java中,封装主要通过将属性设为私有并提供getter和setter方法来实现。这种方式不仅保护了数据完整性,还允许在修改类内部实现时不影响外部代码,从而提升程序的健壮性和可读性。
582 80
|
存储 缓存 Java
java基础:IO流 理论与代码示例(详解、idea设置统一utf-8编码问题)
这篇文章详细介绍了Java中的IO流,包括字符与字节的概念、编码格式、File类的使用、IO流的分类和原理,以及通过代码示例展示了各种流的应用,如节点流、处理流、缓存流、转换流、对象流和随机访问文件流。同时,还探讨了IDEA中设置项目编码格式的方法,以及如何处理序列化和反序列化问题。
323 1
java基础:IO流 理论与代码示例(详解、idea设置统一utf-8编码问题)