java 封装、this关键字、setter和getter方法 23

封装

为什么要封装

  • 现阶段我们定义的属性,对象可以随便的访问,随意的修改不受控制,封装的思想就是吧成员变量隐藏起来。
    封装是什么
  • 封装是“合理隐藏,合理暴露”。
  • 基本实现规范: 封装一般是把成员变量(属性)隐藏起来,提供方法进行合理的暴露访问。
    封装的步骤
  1. 需要使用private关键字修饰属性。
  • private:私有,隐藏的含义。修饰的成员只能在当前类中被直接访问。否则报错!
  1. 需要提供成套的公开的getter和setter方法暴露成员变量的取值和赋值。
  • getter方法:get+成员变量首字母大写的方法返回该成员变量的值。
  • setter方法:set+成员变量首字母大写的方法对成员变量赋值。
    封装的作用
    可以提高代码的安全性,组件化和复用性。
    封装是面向对象的特征和规范
    即使代码毫无意义我们以后的代码风格还是要这样写(成员变量私,方法暴露出来!)
public class PackageDemo {
    public static void main(String[] args) {
        Student boNiu = new Student();
        boNiu.setAge(21); // 赋值,这里的数据必须满足0 - 200之间,否则赋值会失败!
        boNiu.setName("赵丽颖");
        System.out.println(boNiu.getAge()); // 取值
        System.out.println(boNiu.getName()); // 取值
        boNiu.study();
    }
}
class Student{
    private String name ; // 只能在本类中访问
    private int age ; // 只能在本类中访问

    public void setAge(int a){
        if(a > 0 && a < 200){
            age = a;
        }else{
            System.out.println("您的年龄输入有误,请确认!");
        }
    }

    public int getAge(){
        return age;
    }

    public void setName(String n){
        name = n ;
    }

    public String getName(){
        return name;
    }

    public void study(){
        System.out.println("好好学习,认真听课~~~~");
    }
}

this关键字

我们之前定义的set方法的入参的名称没有做到“见名知意”,参数名称没有实际含义。但是参数名称写的有意义的时候又与成员变量名称冲突了,导致数据赋值失败。
例如:这个定义的n没有见名知意,但是如果把 n 换成name那么就重复了
public void setName(String n){
name = n ;
}
解决的方法 this关键字

  • this代表了当前对象的地址引用。
  • this在方法中,谁调用这个方法,this就代表了谁。
  • this用在方法中可以区分变量是访问局部变量还是访问成员变量:从而实现局部变量的见名知意,又不会冲突!
public class PackageDemo {
    public static void main(String[] args) {
        // 1.创建对象
        Student wangLe = new Student();
        wangLe.setName("王乐"); // 赋值
        wangLe.setAge(19);  // 赋值
        System.out.println(wangLe.getName()); // 取值
        System.out.println(wangLe.getAge());  // 取值
        wangLe.study();
    }
}
class Student{
    private String name ; // 只能在本类中访问
    private int age ; // 只能在本类中访问
    // public 是公开的含义,可以直接暴露出去被访问的。
    // this在Java中代表了当前对象的地址引用。
    // this在方法中,谁调用这个方法,this就代表了谁。
    // this用在方法中可以区分变量是访问局部变量还是访问成员变量。
    public void setAge(int age){
        this.age = age; // this.age = 19   wangLe.age = 19
    }

    public int getAge(){
        return age;
    }

    public void setName(String name){
        this.name = name ; // this.name = 王乐  wangLe.name = 王乐
    }

    public String getName(){
        return name;
    }

    public void study(){
        System.out.println("好好学习,认真听课~~~~");
    }
}

注意:
setter和getter方法可以编译器直接生成
鼠标右击—>选中Generate—>选中Setter and Gertter—>按住Shift键然后直接点击最后一个则直接全部选中。

发布了34 篇原创文章 · 获赞 16 · 访问量 281

猜你喜欢

转载自blog.csdn.net/qq_41005604/article/details/105249978
今日推荐