类是面向对象的重要内容。类可以当做一种自定义的数据类型。
类的定义格式如下:
修饰符 Class 类名
{
[静态代码块]
[初始代码块]
[构造器]
[Field]
[Method]
}
1、类的修饰符包括:public、final、abstract、默认。
2、Field是用来存储类、实例的数据,Method则是完成某一功能。静态代码块、初始代码块、构造器是用来对类的、实例的Field进行初始化
3、静态代码块是类在初始化的阶段执行的,而不是在创建对象的时候才执行。
4、初始化代码块、构造器都是在实例对象的时候执行的。
5、Field、Method分为:类Field、实例Field、类Method、实例Method。如被static修饰则为类的,类名.***调用,没有被static修饰,
就是实例的,对象.***调用
class Grandpa {
static{
System.out.println("Grandpa:静态代码块 ");
}
{
System.out.println("Grandpa:构造代码块");
}
public Grandpa(){
System.out.println("Grandpa:构造方法");
}
}class Father extends Grandpa{
static{
System.out.println("Father:静态代码块 ");
}
{
System.out.println("Father:构造代码块");
}
public Father(){
System.out.println("Father:构造方法");
}
}class Son extends Father{
static{
System.out.println("Son:静态代码块 ");
}
{
System.out.println("Son:构造代码块");
}
public Son(){
System.out.println("Son:构造方法");
}
}public class Test{
public static void main(String[] args) {
new Son();
new Son();}
运行结果:
?
1 2 3 4 5 6 7 8 9 |
|
?
1 2 3 4 5 6 |
|
由运行结果可以看出:
1、静态代码块只会在类加载的时候运行一次,之后都不会再运行了。
2、实例化的时候,先执行追溯执行父类的构造代码块、构造方法(不带参数)