8-成员属性封装

2020-10-18  本文已影响0人  c88bc9f9d088

    在类之中的组成就是属性与方法,一般而言方法都是对外提供服务的,所以是不会进行封装处理的,而对于属性由于其需要较高的安全性,所以往往需要对其进行保护,这个时候就需要采用封装性对属性进行保护。
    在默认的情况下,对于类中的属性是可以通过其它类利用对象进行调用的。

范例:属性不封装情况下的问题

class Person {
    String name;
    int age;
    public void tell(){
        System.out.println("姓名:"+name+"、年龄:"+age);
    }
}
public class JavaDemo {
    public static void main(String [] args){
        Person per = new Person();
        per.name = "张三";
        per.age = -18;
        per.tell();
    }
}

    此时在person类中提供的name与age属性并没有进行封装处理,这样外部就可以直接进行调用了,但是有可能设置的数据是错误的数据。如果想解决这样的问题,就可以利用private关键字对属性进行封装处理。

范例:对属性进行封装

class Person {
    private String name;
    private int age;
    public void tell(){
        System.out.println("姓名:"+name+"、年龄:"+age);
    }
}

    而属性一旦封装之后外部将不能够直接访问,即:对外部不可见,但是对类的内部是可见的,那么如果要想外部程序可以访问封装的属性,则在Java开发标准中提供有如下要求:

范例:实现封装

class Person {  //定义一个类
    private String name;   //人员的姓名
    private int age;       //人的年龄
    public void tell(){
        System.out.println("姓名:"+name+"、年龄:"+age);
    }

    public void setName(String n){
        name = n;
    }
    public void setAge(int a){
        if(a > 0){
            age = a;
        }
    }
    public String getName(){
        return name;
    }
    public int getAge(){
        return age;
    }
}
public class JavaDemo {   //主类
    public static void main(String [] args){
        Person per = new Person();   //声明并实例化对象
        per.setName("张三");   // 在类外部修改属性
        per.setAge(-18);      //  在类外部修改属性
        per.tell();           //  进行方法的调用
    }
}

    在以后进行任何类定义的时候一定要记住,类中的所有属性都必须使用private封装(98%),并且属性如果要进行访问必须要提供有setter、getter方法。

上一篇 下一篇

猜你喜欢

热点阅读