Java面向对象编程——封装

面向对象的编程语言,拥有你三大特性,分别是:封装,继承,多态。

封装:封装是指将对象的状态信息隐藏在对象内部,不允许外部程序直接访问对象内部信息,而是通过该类所提供的方法来实现对内部信息的操作访问

封装的好处:

1:提高了安全性

2:提高了复用性

3:隐藏了实现细节

在卖你想对象的过程中,我们通过”权限控制”对封装好的类加上权限,来限制外来者对类的操纵,借以达到保障类中数据和方法的安全性的目的。而这种权限,可以用来控制属性和方法的访问范围

访问权限修饰符

修饰符 同一个类 同一个包 子类 所有类
public 公有的
protected 受保护的
default 默认的
private 私有的

封装的步骤如下:

1:尽量让权限讲到最低,在类里要将属性前添加private修饰符,从而而提高安全性

2:在类中定义 getter和setter方法,在方法内设置取值范围

3:最后,在我们的main 函数里的对象,不能在直接调用属性了,只能通过getter和setter方法进行调用

案例代码:

/**
 * @version 1.0
 * @author: jiazhihao
 * @date: 2021-05-06 11:47
 */
 /*封装
         三大特性: 封装 继承 多态
         set 给属性赋值
         get读取属性的值*/

public class Person {
    //私有属性
    private String name;
    private String pwd;
    private Integer age;
    private String sex;

    // 无参构造方法
    public Person() {
    }

    ;

    //对应私有属性的get和set方法
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPwd() {
        return pwd;
    }

    public void setPwd(String pwd) {
        this.pwd = pwd;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    public String getSex() {
        return sex;
    }

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

    @Override
    public String toString() {
        return "Person[name =" + name + " ,pwd=" + pwd + " ,age=" + age + ",sex=" + sex + "]";

    }
    
}

封装:

public class Demo01 {
    public static int add( int a,int b){
        return  a+b;
    }
    public static void main(String[] args) {
        System.out.println(1+1);
        System.out.println(1+2);
        System.out.println(1+3);
        System.out.println(1+4);
        System.out.println(1+5);
        System.out.println(1+6);


        System.out.println(add(1,1));
        System.out.println(add(1,2));
        System.out.println(add(1,3));
    }


}

上述案例:为了避免不断地+操作,把两数相加写入add方法中,后续直接调用add方法。把具体的操作流程统一管理在add方法中,该过程就是封装的一种集体表现形式

类的封装

public class Demo02 {
    /**
     * public    共有
     * protected   受保护
     * private   私有
     *
     * */

    //把属性私有化
    private String name;
    private   int age;
    //对外提供属性的设置方法
    public void setName(String name){
        this.name = name;
    }
      //对外提供属性的访问方法
    public  String getName(){
        return  this.name;
    }
}

封装需要注意的事项如下:

属性的访问权限尽量给的很小

对外单独提供访问方法

setName给属性赋值

getName读取属性的值

1:由于面向对象的封装性,我们尽量让权限降到最低,在类里要在属性前添加private修饰符,从而提高安全性

2:定义getter和setter方法,使得在main函数里的对象,不能在直接调用属性了,只能通过getter和setter方法进行调用,从而隐藏了实现细节

你可能感兴趣的:(Java面向对象编程——封装)