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; } }
以后, 我们所有的成员变量都要这样来处理. 简单方便.