封装性:
1、将抽象得到的全部属性和方法相结合在一起,形成一个不可分割的单位——类
2、隐藏类的实现细节,将对象的属性和实现细节隐藏,不允许外部直接访问,只把接口公开。通过这些接口来访问或者操作隐藏的属性和方法实现。
访问控制符:
代码块:
在java中,使用花括号({ })括起来的代码成为代码块,根据其位置和声明的不同,可分为普通代码块、构造块、静态块和同步代码块。其中同步代码块在购买多线程会讲解。
普通代码块:
直接在一个方法或者语句中出现的{}就是普通代码块。——相同类型的代码块执行的顺序为,先定义的代码块先执行,后定义的代码块后执行。
构造块:
直接在类中定义的且没有加static关键字的代码块{}为构造块。构造块在创建对象的时候会被调用,每次创建对象都会被调用,且构造块的执行顺序优先于构造函数。

public class CodeBlock{ { System.out.println("第一构造块"); } public CodeBlock(){ System.out.println("构造方法"); } { System.out.println("第二构造块"); } public static void main(String[] args){ new CodeBlock(); new CodeBlock(); new CodeBlock(); } }
执行结果如图所示
第一构造块
第二构造块
构造方法
第一构造块
第二构造块
构造方法
第一构造块
第二构造块
构造方法
静态代码块:
在java类中使用static关键字声明的代码块称为静态代码块。主要用于初始化类,为类的静态属性初始化。
特点:
1、静态代码块不能存于任何方法体内;
2、静态代码块不能直接访问实例变量和实例方法,需要通过类的实例对象来访问。这与静态方法是一样的。
3、JVM在加载类时会执行静态代码块,所以静态代码块先于主方法执行。如果多个则先定义的先执行。每个静态代码块都只执行一次。
例子

class Code{ { System.out.println("Code的构造块"); } static{ System.out.println("Code的静态代码块"); } public Code(){ System.out.println("Code的构造方法"); } } public class CodeBlock01 { { System.out.println("CodeBlock01的构造块"); } static{ System.out.println("CodeBlock01的静态代码块"); } public CodeBlock01(){ System.out.println("CodeBlock01的构造方法"); } public static void main(String[] args) { System.out.println("CodeBlock01的主方法"); new Code(); new Code(); new CodeBlock01(); new CodeBlock01(); } }
结果如下
一些小测试题目:
普通代码块

public class ClassTest01{ public static void main(String args[]){ int x=5; System.out.println(++x); { int x=7; System.out.println(x); } } }
编译会出错,是因为此普通代码块是在main方法内部定义的,在同一个作用域内,一个变量只能定义一次。
综合使用代码块

public class ClassTest02{ static int i; static { i+=10; } public ClassTest02(){ System.out.println("构造方法: "+i); } { System.out.println("构造块: "+i++); } public static void main(String[] args){ System.out.println("主方法:"+(ClassTest02.i++)); new ClassTest02(); } static { i/=10; } } 程序编译的运行结果是( ) A. 主方法:2 构造块:2 构造方法:3 B. 主方法:1 构造块:2 构造方法:3 C. 主方法:1 构造块:3 构造方法:2 D. 主方法:10 构造块:11 构造方法:12 答案见后面
各个代码块的执行顺序:静态代码块》主方法》构造块》构造方法。
引用传递:
所有的函数调用本质上都是值的传递。值传递传入的是基本数据类型值的副本;引用传递传入这个引用地址的副本,这个引用地址实际上是一个值。
上面答案是B 123;