面向对象-封装

2018-10-14  本文已影响3人  UlissesJr

封装
A:封装的概述
是指隐藏对象的属性和实现细节,仅对外提供公共访问方式。

B:封装的好处

C:封装原则

private 关键字

public class Demo1_Person {
    public static void main(String[] args){
        Person p1 = new Person();
        p1.name = "张三";
        p1.setAge(17);
        System.out.println(p1.getAge());
        p1.speak();
    }
}


class Person{
    String name;
    private int age;

    public void setAge(int age){
        if(age>0 && age<200){
            this.age = age;
        }else{
            System.out.println("请重新输入");
        }
    }

    public int getAge(){
        return age;
    }

    public void speak(){
        System.out.println(name + "..." + age);
    }
}

this关键字

代表当前对象的引用

public class Demo1_This {
    public static void main(String[] args){
        Person_1 p1 = new Person_1();
        p1.setName("xiaoming");
        p1.setAge(23);
        System.out.println(p1.getName() + "..." + p1.getAge());
    }
}


class Person_1{
    private String name;
    private int age;

    public void setAge(int age){
        if(age>0 && age<200){
            age = age;
        }else{
            System.out.println("请重新输入");
        }
    }

    public int getAge(){
        return age;
    }

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

    public String getName(){
        return name;
    }
}

代码运行结果
null...0

因为就近原则,当形参age与Person_1类的成员变量参数名相同时,优先选择离命令较近的形参age,也就是形参给自己赋值。

正确的输如如下:

public class Demo1_This {
    public static void main(String[] args){
        Person_1 p1 = new Person_1();
        p1.setName("xiaoming");
        p1.setAge(23);
        System.out.println(p1.getName() + "..." + p1.getAge());
    }
}


class Person_1{
    private String name;
    private int age;

    public void setAge(int age){
        if(age>0 && age<200){
            this.age = age;   //这里this代表当前对象的引用
        }else{
            System.out.println("请重新输入");
        }
    }

    public int getAge(){
        return age;
    }

    public void setName(String name){
        this.name = name;    //成员变量必须有对象来调用  p1的地址值==this的地址值
    }

    public String getName(){
        return name;
    }
}

输出结果如下:
xiaoming...23
上一篇 下一篇

猜你喜欢

热点阅读