类的初始化过程:
Student s = new Student();在内存中做了哪些事情?
•
加载
Student.class
文件进内存
•
在栈内存为
s
开辟空间
•
在堆内存为学生对象开辟空间
•
对学生对象的成员变量进行默认初始化
•
对学生对象的成员变量进行显示初始化
•
通过构造方法对学生对象的成员变量赋值
•
学生对象初始化完毕,把对象地址赋值给
s
变量
static关键字
static
关键字特点
•
随着类的加载而加载
•
优先于对象存在
•
被类的所有对象共享
•
这也是我们判断是否使用静态关键字的条件
•
可以通过类名调用
static
关键字注意事项
•
在静态方法中是没有
this
关键字的
•
静态方法只能访问静态的成员变量和静态的成员方法
•静态的内容存在于方法区的静态区
代码块
•
在
Java
中,使用
{}
括起来的代码被称为代码块,根据其位置和声明的不同,可以分为局部代码块,构造代码块,静态代码块,同步代码块
(
多线程讲解
)
。
继承
•
局部代码块
•
在方法中出现;限定变量生命周期,及早释放,提高内存利用率
•
构造代码块
•
在类中方法外出现;多个构造方法方法中相同的代码存放到一起,每次调用构造都执行,并且在构造方法前执行
•
静态代码块 在类中方法外出现,加了
static
修饰
在类中方法外出现,并加上
static
修饰;用于给类进行初始化,在加载的时候就执行,并且值执行一次
继承
特点 : Java
只支持单继承,不支持多继承。
Java 支持多层继承 ( 继承体系 )
Java 支持多层继承 ( 继承体系 )
super 和 this
super
的用法和
this
很像
•
this
代表本类对应的引用。
•
super
代表父类存储空间的标识
(
可以理解为父类引用
)
用法
(this
和
super
均可如下使用
)
访问成员变量
this.
成员变量
super.
成员变量
访问构造方法
(
子父类的构造方法问题讲
)
this(…) super(…)
访问成员方法
(
子父类的成员方法问题讲
)
this.
成员方法
() super.
成员方法
()
代码一
class X {
Y b = new Y("wcb");
X() {
System.out.print("X");
}
}
class Y {
Y() {
System.out.print(" Y() ");
}
Y(String s) {
System.out.print(" Y(String) ");
}
}
class Z {
Z() {
System.out.print("Z");
}
}
public class Main extends X {
Z z = new Z();
Main() {
System.out.print("Z");
}
public static void main(String args[]) {
new Main();
System.out.println();
}
}
//-----------OUTPUT-----------
//Y(String) XZZ