【JavaSE】面向对象之封装

迷南。 2023-10-14 20:16 196阅读 0赞

封装的概念
封装是把过程和数据包围起来,对数据的访问只能通过已定义的接口。面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治、封装的对象,这些对象通过一个受保护的接口访问其他对象。封装是一种信息隐藏技术,在java中通过关键字private,protected和public实现封装。
什么是封装?
封装把对象的所有组成部分组合在一起,封装定义程序如何引用对象的数据,封装实际上使用方法将类的数据隐藏起来,控制用户对类的修改和访问数据的程度。 适当的封装可以让程式码更容易理解和维护,也加强了程式码的安全性。
封装的特点
1.只能通过规定的方法访问数据。
2.隐藏类的实例细节,方便修改和实现。
实现封装的具体步骤如下:
1.修改属性的可见性来限制对属性的访问,一般设为 private
2.为每个属性创建一对赋值(setter)方法和取值(getter)方法,一般设为 public,用于属性的读写。
3.在赋值和取值方法中,加入属性控制语句(对属性值的合法性进行判断)。
下面以一个员工类的封装为例介绍封装过程。我们假设一个员工的主要属性有姓名、年龄、工资。假设员工类为 Employee,示例如下:

  1. public class Employee {
  2. private String name; // 姓名
  3. private int age; // 年龄
  4. private double balance; // 工资
  5. //定义无参构造方法
  6. public Employee() {
  7. }
  8. //定义有参构造方法
  9. public Employee(String name, double balance, int age) {
  10. this.getBalance();
  11. this.getAge();
  12. this.getName();
  13. }
  14. public String getName() {
  15. return name;
  16. }
  17. public void setName(String name) {
  18. this.name = name;
  19. }
  20. public int getAge() {
  21. return age;
  22. }
  23. public void setAge(int age) {
  24. // 对年龄进行限制
  25. if (age > 18 && age < 45) {
  26. this.age = age;
  27. } else {
  28. System.out.println("年龄必须在18到45之间!");
  29. this. Age = 18; // 默认年龄
  30. }
  31. }
  32. public double getBalance() {
  33. return balance;
  34. }
  35. public void setBalance(double balance) {
  36. //工资必须大于1000
  37. if (balance>1000){
  38. this.balance = balance;
  39. }else {
  40. System.out.println("error");
  41. }
  42. }
  43. }

如上述代码所示,使用 private 关键字修饰属性,这就意味着除了 Employee 类本身外,其他任何类都不可以访问这些属性。但是,可以通过这些属性的 setXxx() 方法来对其进行赋值,通过 getXxx() 方法来访问这些属性。
在 age 属性的 setAge() 方法中,首先对用户传递过来的参数 age 进行判断,如果 age 的值不在 18 到 45 之间,则将 Employee 类的 age 属性值设置为 18,否则为传递过来的参数值。
编写测试类 TestEmployee,在该类的 main() 方法中调用 Employee 属性的 setXxx() 方法对其相应的属性进行赋值,并调用 getXxx() 方法访问属性,代码如下:

  1. public class TestEmployee {
  2. public static void main(String[] args) {
  3. Employee people = new Employee();
  4. people.setName("小张");
  5. people.setAge(20);
  6. people.setBalance(10000);
  7. //输出信息
  8. System.out.println("姓名:" + people.getName());
  9. System.out.println("年龄:" + people.getAge());
  10. System.out.println("工资:" + people.getBalance());
  11. }
  12. }

封装的作用
① 对象的数据封装特性彻底消除了传统结构方法中数据与操作分离所带来的种种问题,提高了程序的可复用性和可维护性,降低了程序员保持数据与操作内容的负担。
②对象的数据封装特性还可以把对象的私有数据和公共数据分离开,保护了私有数据,减少了可能的模块间干扰,达到降低程序复杂性、提高可控性的目的。

发表评论

表情:
评论列表 (有 0 条评论,196人围观)

还没有评论,来说两句吧...

相关阅读

    相关 JavaSE面向对象封装

    封装的概念 封装是把过程和数据包围起来,对数据的访问只能通过已定义的接口。面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治、封装的对象,这些对象通过一个受

    相关 面向对象封装

    封装 该露的露,该藏的藏 我们程序设计要追求“高内聚,低耦合”。 高内聚就是类的内部数据操作细节自己完成,不允许外部干涉; 低耦合:仅暴露少量的方法给外部使用。

    相关 JavaSE面向对象编程

    面向对象编程的本质就是:以类的方式组织代码,以对象的方式组织数据 抽象 三大特征:封装、继承、多态 从认识论角度烤炉是先有对象后有类。对象,是具体的事物。类,是抽象

    相关 JAVASE面向对象

    面向对象 面向对象思想就是不断的创建对象,使用对象,指挥对象做事情.(如果有对象,直接用对象,对我们直接提供服务) 面向对象vs面向过程 面向过程:强调的是过程,所有事情