详解OOP三大特性之一的封装

1.什么是封装

  • Java中的封装中的知质就是将类中的属性与方法隐藏在类的内部,不允许外部程序直接访问,而是通过该类提

供的方法来实现对隐藏的属性与方法进行操作与访问。

2.访问修饰符

  • public
    所以类都可以访问

  • private
    只能本类内访问

  • protected
    只有在同包或者是属于继承关系才能访问

  • 默认访问修饰符(就是什么都不写)
    同包可以访问

2.1封装之private

public class EducoderText {
    private String name;
    private int age;
    private String grader;
}
  • 其他类不能访问和修改 name, age,grader了,如果想要修改或者读取数据就需要第二步
public class EducoderText {
    private String name;
    private int age;
    private String grader;

    public String getName() {
        return name;
    }

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

    public int getAge() {
        return age;
    }

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

    public String getGrader() {
        return grader;
    }

    public void setGrader(String grader) {
        this.grader = grader;
    }
}
  • 如果想要控制其他类对数据的修改可以进行数据验证
    例如:
public class EducoderText {
    private String name;
    private int age;
    private String grader;

    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||age>150){
            System.out.println("年龄输入不合法!!");
        }
        this.age = age;
    }

    public String getGrader() {
        return grader;
    }

    public void setGrader(String grader) {
        if ("男".equals(grader)||"女".equals(grader)){
            this.grader = grader;
        }else {
            System.out.println("性别输入不合法!!");   
        }
    }
}

2.2封装之public

public class Person {
    public String name;//公有
}

2.3封装之默认(default)

class Student {//Student类是默认访问修饰符
    String name; //name是默认访问修饰符
    Student(String name){ //构造函数是默认访问修饰符
        
    }
    void sayHello(){//sayHello方法是默认访问修饰符
        
    }
}

2.3封装之protected

public class EducoderText {
    protect String name;
    protect int age;
    protect String grader;
}
public class Text extends  EducoderText{
    
}

text类是EducoderText的子类,所以受protected保护的数据子类可以访问。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容