面向对象——封装

面向对象共有三个特征: 封装、继承、多态

封装表现

方法就是最基本的封装体
类也是一个封装体

封装的好处

1、提高代码的复用性
2、隐藏实现细节,还要对外提供可以访问的方式,便于调用者的使用。
3、提高安全性,

举例

机箱:
              一台电脑,它是由CPU、主板、显卡、内存、硬盘、电源等部件组长,其实我们将这些部件组装在一起就可以使用电脑了,但是发现这些部件都散落在外面,很容造成不安全因素,于是,使用机箱壳子,把这些部件都装在里面,并在机箱壳上留下一些插口等,若不留插口,大家想想会是什么情况。

总结

机箱其实就是隐藏了办卡设备的细节,对外提供了插口以及开关等访问内部细节的方式。

私有private

把属性私有化,但因为私有化所有无法赋值,所有就有了赋值(设置set),取值(获取 get),
因此对私有的变量访问的方式可以提供对应的set/get方法。

对象的内存解释

class Person {
        private int age;
        public int getAge() {
        return this.age;
        }
        public void setAge(int age) {
        this.age = age;
        }
}
public class PersonDemo {
        public static void main(String[] args) {
        Person p = new Person();
        p.setAge(30);
        System.out.println("大家好,今年我" + p.getAge() + "岁");
        }
}

程序执行流程说明

1、 先执行main方法(压栈),执行其中的 Person p = new Person();

2、 在堆内存中开辟空间,并为其分配内存地址0x1234,紧接着成员变量默认初始化(age = 0);将内存地址0x1234赋值给栈内中的Person p 变量

3、 继续执行p.setAge(30)语句,这时会调用setAge(int age)方法,将30赋值为setAge方法中的“age”变量;执行this.age = age语句,将age变量值30 赋值给成员变量this.age为30;

4、 setAge()方法执行完毕后(弹栈),回到main()方法,执行输出语句System.out.println(),控制台打印p对象中的age年龄值。

注意

this到底代表什么呢?this代表的是对象
具体代表哪个对象呢?哪个对象调用了this所在的方法,this就代表哪个对象。
上述代码中的 p.setAge(30)语句中,setAge(int age)方法中的this代表的就是p对象。

posted @ 2020-05-20 11:52  诸葛孔萌  阅读(67)  评论(0编辑  收藏  举报