Java-封装

举报
不会压弯的小飞侠 发表于 2022/08/10 10:19:56 2022/08/10
【摘要】 🔥封装在面向对象程式设计方法中,封装是指一种将抽象性函式接口的实现细节部分包装、隐藏起来的方法。封装最主要的功能在于能修改自己的实现代码,而不用修改那些调用代码的程序片段。适当的封装可以让程式码更容易理解与维护,也加强了程式码的安全性。🔥优点:良好的封装能够减少耦合。类内部的结构可以自由修改。可以对成员变量进行更精确的控制。隐藏信息,实现细节。🔥1.访问控制符Java的访问控制符:p...

🔥封装

在面向对象程式设计方法中,封装是指一种将抽象性函式接口的实现细节部分包装、隐藏起来的方法。封装最主要的功能在于能修改自己的实现代码,而不用修改那些调用代码的程序片段。适当的封装可以让程式码更容易理解与维护,也加强了程式码的安全性。

🔥优点:

  • 良好的封装能够减少耦合。
  • 类内部的结构可以自由修改。
  • 可以对成员变量进行更精确的控制。
  • 隐藏信息,实现细节。

🔥1.访问控制符

Java的访问控制符:private、protected、public,还有一个不加任何访问控制符的访问控制级别。

  • 四个控制级别由小到大:private、default、protected、public
    • private:当前类访问权限
    • default:包访问权限,可以被相同包下的其他类访问
    • protected:子类访问权限,既可以被同一个包中的其他类访问,也可以被不同包中的子类访问
    • public:公共访问权限
      对于局部变量而言,其作用于就是它所在的方法,不能被其他类访问,所以不能使用访问控制符修饰。

🔥2.封装:将对象的状态信息对外部隐藏起来,不允许外部直接访问,而是由该类提供方法来实现对信息的访问。
良好的封装应该是,对象的Field和实现细节隐藏起来,外界无法直接访问,提供方法来对Field进行访问和操作。
如果一个Java类的每个Field都被使用private修饰,并为每个Field都提供了public修饰的setter和getter方法,那么这个类就是一个符合JavaBean规范的类。JavaBean是一个封装良好的类。

🔥3.实现Java封装的步骤

  • 1.修改属性的可见性来限制对属性的访问(一般限制为private)
    • 将 name 和 age 属性设置为私有的,只能本类才能访问,其他类都访问不了
public class Person {
    private String name;
    private int age;
}
  • 2.对每个值属性提供对外的公共方法访问,也就是创建一对赋取值方法,用于对私有属性的访问
    • this 关键字是为了解决实例变量(private String name)和局部变量(setName(String name)中的name变量)之间发生的同名的冲突。
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;
    }
}

🔥4.案例分析:

  • 将属性私有化,使用private关键字修饰。
  • 为使用private关键字修饰的属性添加getter和setter方法。通过get和set方法来操作属性。
  • 在setter方法中,添加数据的逻辑校验。
public class Student {

    //属性私有
    private  String name;
    private  int id;
    private  char sex;
    private  int age;
    //提供一些 “public 的get set方法”
    //get 获得这个数据
    public  String getName(){
        return  this.name;
    }

    //set 给这个数据设置值
    public  void setName(String name){
        this.name = name;

    }  
    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public char getSex() {
        return sex;
    }

    public void setSex(char sex) {
        this.sex = sex;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        if (age>120||age<0){//不合法
            this.age = 3;
        }else {
            this.age = age;
        }

    }
}

注意:get和set方法的快捷键:Alt+Insert

public class Application {

    public static void main(String[] args) {
        Student s1 = new Student();

        s1.setName("小飞侠");

        System.out.println(s1.getName());

        s1.setAge(1000);
        System.out.println(s1.getAge());
    }
}

🍁博客主页:👉@不会压弯的小飞侠
欢迎关注:👉点赞👍收藏留言
系列专栏:👉21天挑战回顾java
知足上进,不负野心。
🔥欢迎大佬指正,一起学习!一起加油!

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。