天天看点

Java中 set()和get()方法

面向对象三个特征:封装,继承,多态。(都是什么样的表现形式?)

其中封装性中最重要的表现形式之一是将类中的成员变量私有化(使用privete修饰符),然后通过set()和get()方法从外部使用这个变量

set() get()方法:

  • 使得可以访问类内部的私有化(private)成员属性;
  • 首先:为何要私有化数据?提高安全性,使得外部不能够直接访问,也是封装的一种表现形式;
  • 其次,为何又要设置方法来使用数据(使用数据的两种方式:设置:set(),获取:get())?可以在方法中对数据的使用制定规则(逻辑判断语句)!
  • 最终提高代码的健壮性,安全性。将不需要对外提供的内容(通常是属性)隐藏,提供公共(public)方法对其访问。

请对比下列两种访问类中成员属性的方法,体会用法:

第一种:成员属性没有private修饰符

class Person
{
    int age;   //Person类中的age成员属性没有private修饰符
    void speak(){
        System.out.println("age = " + age);
    }
}
class  personDemo
{
    public static void main(String[] args) 
    {
        Person p = new Person();//实例化Person类,获得对象的引用p
        p.age = ;   //可以从外部直接访问Person类的成员属性age
        p.speak();
    }
}
           

第二种:成员属性前缀private修饰符

class Person
{
    private int age;   //Person类中的age成员属性前缀private修饰符
    void speak(){
        System.out.println("age = " + age);
    }
}
class  personDemo
{
    public static void main(String[] args) 
    {
        Person p = new Person();
        //p.age = 20;   错误语句,无法直接通过对象引用访问age成员属性(目的:提高安全性、健壮性)
        p.speak();
    }
}
           

解决方法:使用set()和get()方法

class Person
{
    private int age;    //Person类中的age成员属性前缀private修饰符
    public void setAge(int age_1){   //定义公用方法, 注意区分age_1和this.age
        this.age= age_1;
    }
    public int getAge(){
        return age;
    }
    void speak(){
        System.out.println("age = " + age);
    }
}
class  personDemo
{
    public static void main(String[] args) 
    {
        Person p = new Person();
        p.setAge();
        int age = p.getAge();
        p.speak();
    }
}
           

为何要使用set()和get()方法,多此一举?

class Person
{
    private int age;   
    public void setAge(int age_1){ 
        if(age_1>= && age_1<){  
            this.age= age_1;
            speak();
        }
        else
            System.out.println("illegal age!");//提高安全性,外部无法传入-1这种年龄!
    }
    public int getAge(){
        return age;
    }
    void speak(){
        System.out.println("age = " + age);
    }
}
class  personDemo
{
    public static void main(String[] args) 
    {
        Person p = new Person();
        p.setAge();
        int age = p.getAge();
        p.speak();
    }
}
           

继续阅读