自学内容网 自学内容网

Java第二阶段---11封装---第一节 封装(Encapsulation)

1. 什么是封装

封装就是将类的部分(也可能是所有)属性和方法隐藏起来,不允外部程序直接访问,只能通过该类提供的公开的方法(接口)来访问类中定义的属性和方法。封装是面对对象的三大特征之一。

2.如何使用封装

示例

public class Person {

    public String name;//姓名

    public int age;//年龄

    public String secret;//秘密

    //定义了一个构造方法用来创造对象
    public Person(String name,int age, String secret){
        this.name = name;
        this.age = age;
        this.secret = secret;
    }
}

修改属性的可见性:将类中定义的所有属性全部修改为private修饰

public class Person {

    private String name;//姓名

    private int age;//年龄

    private String secret;//秘密

    //定义了一个构造方法用来创造对象
    public Person(String name,int age, String secret){
        this.name = name;
        this.age = age;
        this.secret = secret;
    }
}

创建公开的getter/setter方法:用于读取/修改属性值

public class Person {

    private String name;//姓名

    private int age;//年龄

    private String secret;//秘密

    //定义了一个构造方法用来创造对象
    public Person(String name,int age, String secret){
        this.name = name;
        this.age = age;
        this.secret = secret;
    }

    //ALT + INSERT
    public String getName() {
        return name;
    }

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

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        if(age<0){
            System.out.println("你输入的年龄不合法,年龄必须为 > 0 的整数");
        }else{
            this.age = age;
        }
    }

    public String getSecret() {
        return secret;
    }

    public void setSecret(String secret) {
        this.secret = secret;
    }
}

在getter/setter方法中加入控制语句:用于对属性值的合法性校验

  public void setAge(int age) {
        if(age<0){
            System.out.println("你输入的年龄不合法,年龄必须为 > 0 的整数");
        }else{
            this.age = age;
        }
    }

3. 为什么要使用封装

a.封装提高了代码的重用性。因为封装会提供对外访问的公开的方法,而方法可以重用,因此封装提高了代码的重用性。

b.封装提高了代码的可维护性。

比如:年龄在设计时只考虑到了负数的情况,没有考虑实际生活中的情况,人的年龄一般都不会超过200岁,因此还需要加上一层验证

public void setAge(int age){
if(age < 0 || age>200){
System.out.println("你输入的年龄不合法,年龄必须为0~200之间的整数");
}else{
this.age = age;
}
}


原文地址:https://blog.csdn.net/2301_80300263/article/details/142719664

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!