面向对象进阶
(封装,this,static,包和代码块)
封装
即隐藏对象的属性和实现细节,仅对外公开接口。控制在程序中属性的读和修改的访问级别。
例:把private 的属性,给他设立方法Get 和Set。这样可以进行数据的判断保护数据的合理性。
void setAge(int age){ if(age<= 0){ System.out.println("年龄不合理"); }else{ this.Age = age; } }
this
this关键字
* 调用类中的属性
* 调用类中的方法或构造方法
(this在一个构造方法中调用另一个构造方法,调用代码必须在第一行)
* 表时当前对象
this调用构造函数
class Person{ private String name; private int age; Person(){ this("默认姓名",1);// 作用等于 name = "默认姓名" } }
static
static 的东西加载在方法区中。
static 的加载是当类被加载的时候就被加载了(可理解成,类的属性)(而不是类的对象的属性)
类名.(static)属性
如果把region设为static
每个对象的创建都由static region的值
权限修饰符
代码块(构造代码块,静态代码块,同步代码块(后续学))
格式
{
+代码
}
构造代码块
构造代码块在对象创造时执行且 执行在构造方法之前
构造方法不一定被调用(多参构造方法),但是构造代码块一定执行
静态代码快
静态代码块,随着类的加载(第一次使用类),静态代码块执行
因为类只加载一次,所以静态代码块也只执行一次(可以用来准备资源操作)
面试题:
构造方法和构造代码块和静态代码块的执行顺序
静态代码块 > 构造代码块 > 构造方法
面试题:
构造方法和构造代码块和静态代码块的执行顺序
静态代码块 > 构造代码块 > 构造方法