getter和setter

getter和setter

我们先不管getter和setter是啥. 来看一段代码
package com.lewen.day17;
public class Person {
     String name;
     int age;
     public void chi(){
         System.out.println(this.name+"在吃东西");
     }
 }

写一个测试Person的
package com.lewen.day17;
public class TestPerson_1 {
    public static void main(String[] args) {
        Person_1 p = new Person_1();
//        p.name = "lewen";
//        p.age = 18;
        p.setName("元贞");
        p.setAge(18);
        System.out.println(p.getAge());
    }
}

没毛病. 对吧. 程序也可以正常执行.

但是. 大家想一下. 如果我写这么一行代码. 你琢磨琢磨程序报错不

p.age = -1;

不报错. 但是逻辑通顺么? 一个人活了这么多年. 还欠人家一岁. 这就逗比了. 也就是说. 我们的成员变量在很多情况都是不可以直接进行赋值的. 这样很容易产生逻辑问题. 程序虽然不会报错. 但是逻辑不通. 那怎么办呢? 很简单. 不让外界直接访问不就行了. 加上private.

public class Person {
     private String name;
     private int age;
     public void chi(){
         System.out.println(this.name+"在吃东西");
     }
 }

加上是加上了. 但是这样的话. 我的Test里面就报错了啊. 私有的. 不能随意访问啊. 那也就是说. 此时还需要一个能够给age赋值这样的一个功能. 还需要一个外界能获取到age的信息的这样的一个功能. 对吧? 前面说过. 对功能或者动作的封装 —> 方法~~~

package com.lewen.day17;

public class Person_1 {
    private String name;
    private int age;

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

    public String getName() {
        return name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        if (age < 0) {
            this.age = 0;
        } else {
            this.age = age;
        }
    }

    public void chi() {
        System.out.println(this.name + "在吃东西");
    }
}

注意, 此时我的age就不会被外界干扰了. 即使设置成负数. 也会置零.

测试类:

package com.lewen.day17;

public class TestPerson_1 {
    public static void main(String[] args) {
        Person_1 p = new Person_1();
//        p.name = "lewen";
//        p.age = 18;
        p.setName("元贞");
        p.setAge(18);
        System.out.println(p.getAge());

    }

}

    OK. 本例中, 我们把成员变量用private保护起来.然后给出set和get方法, 在外界访问这个属性的时候,就需要使用set和get方法了. 那这里的get和set就是getter和setter方法.

相信大家已经满满的恶意了. 这么麻烦. 受得了受不了~ 别担心. 我们用的是IDEA. 高级货. 必然有高级的办法来解决

public class Job {
    private String title;
    private int salary;
}

快捷键: 空白处, 右键-> generate -> getter and setter -> ctrl + A -> OK ! enjoy~~~~

package com.lewen.day17;

public class Job {
    private String title;
    private int salary;

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public int getSalary() {
        return salary;
    }

    public void setSalary(int salary) {
        this.salary = salary;
    }
}

以后, 我们所有的成员变量都要这样来处理. 简单方便.

posted @ 2020-01-18 10:54  元贞  阅读(312)  评论(0编辑  收藏  举报