Java语言–面向对象(下)
1. 包
包就是目录
Java中的包和在磁盘中的目录是一一对应的,如果代码中的文件太多,就需要分类放到不同的目录中。
1.1 包的创建
static 关键字:
- 如果类中的某个方法加上了 static 关键字,说明这个成员是个类属性/类方法. 如果没有 static ,成员是一个实例属性/实例方法
public class Cat {
public String name;
public String gender;
public Cat(String name, String gender){
this.name = name;
this.gender = gender;
}
}
以上代码中 name 和 gender 属性都没有加 static 关键字, 说明此时的 name 和 gender 都是实例属性, 和对象相关,不同的对象就可以有不同的属性的值
Cat cat = new Cat("一月", "公猫");
Cat cat1 = new Cat("二月","母猫");
cat 和 cat1 是不同的对象,他们的 name 和 gender 属性的值是不同的
2. static 修饰的方法中不能使用this,this指向的是当前的实例, static 方法和实例无关只和类有关,同理也无法在static 中访问非 static 的变量和方法
3. static 修饰代码块,这个代码块成为"静态代码块", 这个代码块只在类加载的时候执行一次. 往往用来初始化静态成员.
2. 访问限定符
通过访问限定符体现面向对象的封装的特性
public: 修饰的成员可以被外部的类随意访问
private: 只能在类的内部使用
protected:搭配继承使用
default(不写): 包级权限, 在同一个包中的类都能使用
封装的目的就是让使用者了解到的信息尽量少,如果一个成员被 private 修饰了, 此时使用者就获取不到了,一个成员能被设置成 private 就尽量设置成private
3.内部类
把类的定义写到另一个类中
内部类可以分为
- 普通的内部类/成员内部类
- 静态内部类(内部类前加static)
- 匿名内部类(相对比较常用)
- 局部内部类(直接定义到方法内部的)
JVM 将申请到的一大块区域划分为栈、堆、方法区
栈中保存到是方法和方法之间的调用关系;
堆中保存的是 new 出来的对象(实例),实例属性在堆上;
方法区中保存的是一个一个“类相关的信息”,每个类方法的二进制指令也在这里,类属性在方法区。对于方法来说,不管有没有 static 修饰,对应的内容都在方法区中。