Java-封装

活动地址:CSDN21天学习挑战赛
Java-封装_第1张图片
博客主页:@不会压弯的小飞侠
欢迎关注:点赞收藏留言
系列专栏:21天挑战回顾java
知足上进,不负野心。
欢迎大佬指正,一起学习!一起加油!

在这里插入图片描述

第二周学习内容:面向对象基础

学习内容:
面向对象之封装

目录

  • 封装


封装

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

优点:

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

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());
    }
}

你可能感兴趣的:(回顾JAVA,java,jvm,开发语言)