封装的概念

/*
 * 封装概述:是指隐藏对象的属性和实现细节,仅仅对外提供公共访问的方式.
 * 			通过private关键字隐藏变量和方法,通过set方法让外界能够赋值,通过get方法让外界能够获取值
 * 封装好处:
 * 		隐藏实现细节,提供公共访问方式
 * 		提高代码的复用性
 * 		提高了安全性
 * 封装原则:
 * 		不需要对外提供的内容都隐藏起来
 * 		把属性隐藏,提供公共访问的方法
 * 
 * private关键字:
 * 		修饰成员变量和成员方法
 * 		被private修饰的成员只有在本类中才能被访问,其他类无法访问
 * 		可以通过对外界提供get和set的公共(public)方法的方式,让外界操作变量
 * 
 * this关键字:
 * 		它是当前类的引用对象,简单的说,他就代表当前类的一个对象
 * 		谁调用这个方法,在这个方法内部的this就代表谁
 * 		由于变量的引用规则是就近原则,this就是为了解决局部变量隐藏成员变量的问题
 * */

this关键字的内存图

Java隐藏按钮边框_Java隐藏按钮边框


创建对象内存图

Java隐藏按钮边框_成员变量_02


静态static定义:

/*
 * 静态
 * static的特点:可以修饰成员变量,也可以修饰成员方法
 * 		A:随着类的加载而加载,main方法在虚拟机加载class的时候就直接加载了
 * 		B:有先于对象。静态加载类的时候就加载,对象需要进一步创建
 * 		C:被类的所有对象共享。反过来来说,如果某个成员变量是被所有对象共享的,那么他就应该被定义为静态的
 * 			对于静态成员变量,如果一个对象对他设置了值,那么多有对象都会使用这个值
 * 		D:可以通过类名直接调用(像main方法,不创建对象就可以使用),也可以通过对象调用,推荐使用类名直接调用
 * 静态修饰的内容一般都是和类相关的
 * 注意事项:
 * 		A:静态方法中没有this关键字的。因为静态方法随着类的加载而加载,this是随着对象创建而创建,静态比对象先存在
 * 		B:静态方法只能访问静态成员变量和静态成员方法
 * 静态变量和成员变量的区别:
 * 		A:静态变量位于方法区中的静态区,成员变量存储于堆内存
 * 		B:静态变量可以用类名调用,也可以用对象调用,成员变量只能用对象调用
 * 		C:产生时间不同
 * 
 * */

static内存图

Java隐藏按钮边框_Java隐藏按钮边框_03


代码块:

/*
 * 代码块:在java中使用{}括起来的称为代码块。
 * 根据位置不同可以分为 局部代码块、构造代码块、静态代码块
 * 	局部代码块:位于方法中,用于限定变量的生命周期,代码块外不能使用该变量
 * 	构造代码块:在类的成员位置,用{}括起来的代码。每次调用构造方法之前都会执行构造代码块。调几次执行几次
 * 		作用:将构造方法中的共同的代码提取出来放在一起,对对象进行初始化
 * 	静态代码块:位于类中成员位置,在代码块{}前用static修饰。
 * 		作用:对类进行修饰,在加载构造方法的时候首先执行,而且只执行一次
 * 
 * 执行顺序:
 * 	静态代码块 -> 构造代码块-> 构造方法
 * 	静态代码块首先执行,且只执行一次,构造代码块每次调用构造方法都要执行
 * */