封装的概念
/*
* 封装概述:是指隐藏对象的属性和实现细节,仅仅对外提供公共访问的方式.
* 通过private关键字隐藏变量和方法,通过set方法让外界能够赋值,通过get方法让外界能够获取值
* 封装好处:
* 隐藏实现细节,提供公共访问方式
* 提高代码的复用性
* 提高了安全性
* 封装原则:
* 不需要对外提供的内容都隐藏起来
* 把属性隐藏,提供公共访问的方法
*
* private关键字:
* 修饰成员变量和成员方法
* 被private修饰的成员只有在本类中才能被访问,其他类无法访问
* 可以通过对外界提供get和set的公共(public)方法的方式,让外界操作变量
*
* this关键字:
* 它是当前类的引用对象,简单的说,他就代表当前类的一个对象
* 谁调用这个方法,在这个方法内部的this就代表谁
* 由于变量的引用规则是就近原则,this就是为了解决局部变量隐藏成员变量的问题
* */
this关键字的内存图
创建对象内存图
静态static定义:
/*
* 静态
* static的特点:可以修饰成员变量,也可以修饰成员方法
* A:随着类的加载而加载,main方法在虚拟机加载class的时候就直接加载了
* B:有先于对象。静态加载类的时候就加载,对象需要进一步创建
* C:被类的所有对象共享。反过来来说,如果某个成员变量是被所有对象共享的,那么他就应该被定义为静态的
* 对于静态成员变量,如果一个对象对他设置了值,那么多有对象都会使用这个值
* D:可以通过类名直接调用(像main方法,不创建对象就可以使用),也可以通过对象调用,推荐使用类名直接调用
* 静态修饰的内容一般都是和类相关的
* 注意事项:
* A:静态方法中没有this关键字的。因为静态方法随着类的加载而加载,this是随着对象创建而创建,静态比对象先存在
* B:静态方法只能访问静态成员变量和静态成员方法
* 静态变量和成员变量的区别:
* A:静态变量位于方法区中的静态区,成员变量存储于堆内存
* B:静态变量可以用类名调用,也可以用对象调用,成员变量只能用对象调用
* C:产生时间不同
*
* */
static内存图
代码块:
/*
* 代码块:在java中使用{}括起来的称为代码块。
* 根据位置不同可以分为 局部代码块、构造代码块、静态代码块
* 局部代码块:位于方法中,用于限定变量的生命周期,代码块外不能使用该变量
* 构造代码块:在类的成员位置,用{}括起来的代码。每次调用构造方法之前都会执行构造代码块。调几次执行几次
* 作用:将构造方法中的共同的代码提取出来放在一起,对对象进行初始化
* 静态代码块:位于类中成员位置,在代码块{}前用static修饰。
* 作用:对类进行修饰,在加载构造方法的时候首先执行,而且只执行一次
*
* 执行顺序:
* 静态代码块 -> 构造代码块-> 构造方法
* 静态代码块首先执行,且只执行一次,构造代码块每次调用构造方法都要执行
* */