封装private
- 封装的意义在于保护或者防止代码(数据)被我们无意中破坏
- 保护成员属性,不让类以外的程序直接访问和修改
封装原则
- 隐藏对象的属性和实现的细节,进对外公开访问方法,并且控制访问级别
this关键字
使用this可以完成以下操作:
-
调用类中的属性
-
调用类中的方法或构造方法
public class TextThis { int a,b,c; public TextThis() { System.out.println("正在初始化对象"); } public TextThis(int a,int b) { //TextThis(); 报错 this(); //调用无参的构造函数 a=a; this.b = b; } }
-
表示当前对象
package second;
public class TextThis {
public static void main(String[] args) {
Demo demo = new Demo("张三");
System.out.println(demo.name);
}
}
class Demo{
String name;
public Demo(String name) {
System.out.println("正在初始化创建好的对象:"+this);
//name=name;
this.name = name;
}
}
- this不能用在static方法中
static
- 静态导包
- static方法一般称作静态方法,由于静态方法不依赖于任何对象就可以进行访问,因此对于静态方法来说,是没有this的。(因为它不依附于任何对象,既然都没有对象,就谈不上this了)
- 在静态方法中不能访问类的非静态成员变量和非静态成员方法,因为非静态成员方法/变量都是必须依赖具体的对象才能够被调用。
- 非静态成员方法中是可以访问静态成员方法/变量的
static变量
- static变量也称作静态变量
- 静态变量和非静态变量的区别是:静态变量被所有的对象所共享,在内存中只有一个副本【存放在方法区】,它当且仅当在类初次加载时会被初始化【加final和不加final的static变量初始化的位置不一样】。而非静态变量是对象所拥有的,在创建对象的时候被初始化,存在多个副本,各个对象拥有的副本互不影响。
包使用规范
- 通常使用多个字母命名,所有单词小写,单词和单词之间使用.隔开,一般命名为com.公司名.项目名.模块名…
- 使用import导入包
代码块
-
普通代码块
-
构造代码块
- 构造代码块和构造方法类型,不起名字,直接{}
- 构造代码块,随着对象的每次创建,执行一次,且执行在构造方法之前。
- 构造方法可能不会被执行(构造方法重载),但构造代码块一定会执行,可以创建多个构造代码块
-
静态代码块
- 随着类的加载,静态代码块执行
- 因为类只加载一次,所以静态代码块只执行一次
public class ConstructionCodeBlock {
public static void main(String[] args) {
Person person1 = new Person();
Person person2 = new Person();
}
}
class Person{
private String name;
private int age;
{
System.out.println("对象创建的时候执行1");
}
public Person() {
System.out.println("对象创建的时候执行2");
}
static {
System.out.println("这是静态代码块");
}
}
//运行结果
这是静态代码块
对象创建的时候执行1
对象创建的时候执行2
对象创建的时候执行1
对象创建的时候执行2
- 执行顺序:
- 静态代码块 -> 构造代码块 -> 构造方法