java面向对象三大特性,封装篇

简介: 1.封装的概念在面向对象程式设计方法中,封装是指一种将抽象性函式接口的实现细节部分包装、隐藏起来的方法。封装可以被认为是一个保护屏障,防止该类的代码和数据被外部类定义的代码随机访问。


1.封装的概念


在面向对象程式设计方法中,封装是指一种将抽象性函式接口的实现细节部分包装、隐藏起来的方法。


封装可以被认为是一个保护屏障,防止该类的代码和数据被外部类定义的代码随机访问。


要访问该类的代码和数据,必须通过严格的接口控制。


封装最主要的功能在于我们能修改自己的实现代码,而不用修改那些调用我们代码的程序片段。


适当的封装可以让程式码更容易理解与维护,也加强了程式码的安全性。


封装的优点:😊


良好的封装能够减少耦合。


类内部的结构可以自由修改。


可以对成员变量进行更精确的控制。


隐藏信息,实现细节。


封装的实现步骤:😊


一个私有的数据域(设置属性为private)

一个公有的域访问器方法(getter)

一个公有的域更改器方法(setter)


2.基本的封装代码块


任何要访问类中私有成员变量的类都要通过这些getter和setter方法


public class Encapsulation {
    private String name; 
    private int age;
    private double sal;
    // 进行封装操作
    public String getName() {
        return name;
    }
    public void setName(String name) {
        // 很方便的就可以加入对于数据的校验
        if (name.length() >= 2 && name.length() <= 6) {
            this.name = name;
        } else {
            System.out.println("不要搞破坏哦!");
        }
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        // 这里对数据的正确性做判断
        if (age >= 18) {
            this.age = age;
        } else {
            System.out.println("您还未成年!");
        }
    }
    public double getSal() {
        return sal;
    }
    public void setSal(double sal) {
        this.sal = sal;
    }
    // 返回属性的信息
    @Override
    public String toString() {
        return "Encapsulation{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", sal=" + sal +
                '}';
    }
}


测试类:


Encapsulation encapsulation = new Encapsulation();
encapsulation.setName("dahe");
encapsulation.setAge(22);
encapsulation.setSal(15000.00);
System.out.println(encapsulation);
// Encapsulation{name='dahe', age=22, sal=15000.0}


注意:这里是重写了toString方法,所以输出会选择以重写的toString格式输出


3.构造器结合封装使用


我们发现,使用封装对于数据的安全保障可以很容易通过构造器进行破解


所以我们在定义构造器的时候可以结合封装进行使用:


public Encapsulation(String name, int age, double sal) {
  // 保证了数据的封装性不可变
    setName(name);
    setAge(age);
    setSal(sal);
}



目录
相关文章
|
1天前
|
安全 Java
Java基础&面向对象&继承&抽象类
Java基础&面向对象&继承&抽象类
|
1天前
|
Java
【Java基础】详解面向对象特性(诸如继承、重载、重写等等)
【Java基础】详解面向对象特性(诸如继承、重载、重写等等)
5 0
|
6天前
|
安全 Java 机器人
《Java 简易速速上手小册》第2章:面向对象的 Java(2024 最新版)
《Java 简易速速上手小册》第2章:面向对象的 Java(2024 最新版)
19 0
|
7天前
|
机器学习/深度学习 Java API
Java8中的新特性
Java8中的新特性
|
9天前
|
存储 Java
Java基础教程(7)-Java中的面向对象和类
【4月更文挑战第7天】Java是面向对象编程(OOP)语言,强调将事务抽象成对象。面向对象与面向过程的区别在于,前者通过对象间的交互解决问题,后者按步骤顺序执行。类是对象的模板,对象是类的实例。创建类使用`class`关键字,对象通过`new`运算符动态分配内存。方法包括构造函数和一般方法,构造函数用于对象初始化,一般方法处理逻辑。方法可以有0个或多个参数,可变参数用`类型...`定义。`this`关键字用于访问当前对象的属性。
|
9天前
|
分布式计算 Java API
Java 8新特性之Lambda表达式与Stream API
【4月更文挑战第16天】本文将介绍Java 8中的两个重要新特性:Lambda表达式和Stream API。Lambda表达式是Java 8中引入的一种新的编程语法,它允许我们将函数作为参数传递给其他方法,从而使代码更加简洁、易读。Stream API是Java 8中引入的一种新的数据处理方式,它允许我们以声明式的方式处理数据,从而使代码更加简洁、高效。本文将通过实例代码详细讲解这两个新特性的使用方法和优势。
|
13天前
|
存储 Java 编译器
对象的交响曲:深入理解Java面向对象的绝妙之处
对象的交响曲:深入理解Java面向对象的绝妙之处
46 0
对象的交响曲:深入理解Java面向对象的绝妙之处
|
8月前
|
Java
Java复习与学习笔记----封装
Java复习与学习笔记----封装
|
Java
java学习第七天笔记-方法150-封装2方法使用
java学习第七天笔记-方法150-封装2方法使用
52 0
java学习第七天笔记-方法150-封装2方法使用
|
Java
java学习第六天笔记-方法129-综合联系-飞机票方法封装
java学习第六天笔记-方法129-综合联系-飞机票方法封装
49 0
java学习第六天笔记-方法129-综合联系-飞机票方法封装