16.Java 封装

Java封装

在这里插入图片描述

1. java封装概述
1.1.封装定义

在面向对象程式设计方法中,封装(英语:Encapsulation)是指一种将抽象性函式接口的实现细节部份包装、隐藏起来的方法。(隐藏对象的属性和实现细节,仅对外提供公共访问方式。)

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

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

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

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

1.2.封装的优点
  1. 良好的封装能够减少耦合。

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

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

  4. 隐藏信息,实现细节。

1.3.封装原则
  • 将不需要对外提供的内容都隐藏起来。
  • 把属性隐藏,提供公共方法对其访问。
2.封装使用关键词
2.1.private关键字
  1. private关键字特点
  • 是一个权限修饰符

  • 可以修饰成员变量和成员方法

  • 被其修饰的成员只能在本类中被访问

  1. 封装和private的应用:
  • 把成员变量用private修饰

  • 提供对应的getXxx()和setXxx()方法

  • private仅仅是封装的一种体现形式,不能说封装就是私有

  1. 案例演示
class Demo1_Person {
       public static void main(String[] args) {
              Person p1 = new Person();
        p1.name = "张三";          //调用姓名属性并赋值
        //p1.age = -17;            //调用年龄属性并赋值
        //p1.speak();                  //调用行为
              p1.setAge(-17);
              System.out.println(p1.getAge());
       }
}
class Person {
    String name;                   //姓名
    private int age;               //年龄 
    public void setAge(int a) {    //设置年龄
              if (a > 0 && a < 200) {
                     age = a;
              }else {
            System.out.println("请回火星吧,地球不适合你");
              }         
       }
    public int getAge() {          //获取年龄
              return age;
       }
     public void speak() {
             System.out.println(name + "..." + age);
       }
}
2.2.this关键字
  1. this关键字特点
  • 代表当前对象的引用

  • 用来区分成员变量和局部变量重名

  1. :案例演示
  • this的应用场景

  • 用来区分成员变量和局部变量重名

 class Demo1_This {
           public static void main(String[] args) {
                  Person p1 = new Person();
                  p1.setName("张三");
                  p1.setAge(23);
                  System.out.println(p1.getName() + "..." + p1.getAge());
                 Person p2 = new Person();
                  p2.setName("李四");
                  p2.setAge(24);
                  System.out.println(p2.getName() + "..." + p2.getAge());
           }
    } 
    class Person {
        private String name;                 //姓名
        private int age;                        //年龄  
        public void setAge(int age) {      //设置年龄
                  if (age > 0 && age < 200) {
                         this.age = age;
                         System.out.println(age);
                  }else {
                System.out.println("请回火星吧,地球不适合你");
                  }             
           }
        public int getAge() {                //获取年龄
                  return age;
           } 
        public void setName(String name) { //设置姓名
                  this.name = name;
                  System.out.println(name);
           }
           public String getName() {
                  return name;
           }
    }
3.实现Java封装的步骤
3.1. 修改属性的可见性来限制对属性的访问(一般限制为private)

例:

public class Person {
    private String name; 
    private int age; 
}

这段代码中,将 name 和 age 属性设置为私有的,只能本类才能访问,其他类都访问不了,如此就对信息进行了隐藏。

3.2. 对每个值属性提供对外的公共方法访问,也就是创建一对赋取值方法,用于对私有属性的访问

例:

public class Person{ 
private String name;
private int age; 
public int getAge(){ 
return age;
    } 
public String getName(){
return name;
    }  
public void setAge(int age){ 
this.age = age;
    } 
public void setName(String name){ 
this.name = name; 
    }
}

采用 this 关键字是为了解决实例变量(private String name)和局部变量(setName(String name)中的name变量)之间发生的同名的冲突。

3.3.实例
public class EncapTest{ 
    private String name; 
    private String idNum; 
    private int age;
    public int getAge(){
        return age;
         } 
    public String getName(){
        return name;
        }
    public String getIdNum(){ 
        return idNum; 
        }
    public void setAge( int newAge){ 
        age = newAge;
        } 
    public void setName(String newName){
        name = newName;
        }
    public void setIdNum( String newId){
        idNum = newId;
        } 
}

以上实例中public方法是外部类访问该类成员变量的入口。通常情况下,这些方法被称为getter和setter方法。因此,任何要访问类中私有成员变量的类都要通过这些getter和setter方法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
校园失物招领系统管理系统按照操作主体分为管理员和用户。管理员的功能包括字典管理、论坛管理、公告信息管理、失物招领管理、失物认领管理、寻物启示管理、寻物认领管理、用户管理、管理员管理。用户的功能等。该系统采用了Mysql数据库Java语言,Spring Boot框架等技术进行编程实现。 校园失物招领系统管理系统可以提高校园失物招领系统信息管理问题的解决效率,优化校园失物招领系统信息处理流程,保证校园失物招领系统信息数据的安全,它是一个非常可靠,非常安全的应用程序。 ,管理员权限操作的功能包括管理公告,管理校园失物招领系统信息,包括失物招领管理,培训管理,寻物启事管理,薪资管理等,可以管理公告。 失物招领管理界面,管理员在失物招领管理界面中可以对界面中显示,可以对失物招领信息的失物招领状态进行查看,可以添加新的失物招领信息等。寻物启事管理界面,管理员在寻物启事管理界面中查看寻物启事种类信息,寻物启事描述信息,新增寻物启事信息等。公告管理界面,管理员在公告管理界面中新增公告,可以删除公告。公告类型管理界面,管理员在公告类型管理界面查看公告的工作状态,可以对公告的数据进行导出,可以添加新公告的信息,可以编辑公告信息,删除公告信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值