- 顺便记一下今天学到的然后又就觉得挺有意思的内容
在Java中,使用{}括起来的代码被称为代码块。 - 在Java中,使用{}括起来的代码被称为代码块。
- 代码块的分类:
- 局部代码块:在方法中出现
- 构造代码块:在类中方法外存在,执行先于构造方法
class A {
{
System.out.println("这个就是构造代码块");
}
piblic A {
System.out.println("--------");
}
public void print() {
System.out.println("这个是类中的方法");
}
}
- 静态代码块:在类中方法外出现,并加上static修饰;用于给类进行初始化,在加载的时候就执行,并且只执行一次。
又因为类一加载,静态的东西就跟着执行,而构造函数构造代码块这些事跟着对象的出现而出现,所以静态代码块比构造代码块先执行 - 同步代码块:这个目前还不熟悉,等学了再补充
继承中的this和super的区别
this:代表当前对象的引用,谁来调用我,我就代表谁
super:代表当前对象父类的引用
调用成员变量:
this.成员变量 调用本类的成员变量,也可以调用父类的成员变量
super.成员变量 调用父类的成员变量
调用构造方法(必须出现在第一行,且只能存在两者之一,不写出来系统会默认)
this(…) 调用本类的构造方法
super(…) 调用父类的构造方法
调用成员方法
this.成员方法 调用本类的成员方法,也可以调用父类的方法
super.成员方法 调用父类的成员方法
- 子类中所有的构造方法默认都会访问父类中空参数的构造方法( 因为子类会继承父类中的数据,可能还会使用父类的数据。所以,子类初始化之前,一定要先完成父类数据的初始化。)
class A {
public A {
System.out.println("这是父类");
}
}
class B extends A {
super(); //这个就是调用父类无参构造函数,就算不写出来,系统也会默认这句的存在
public B {
System.out.println("这是子类");
}
}
class Test {
public static void main(String[] args) {
B b = new B(); //一般都是创建子类对象,因为可以方便用父类的资源
}
}
/*
所以输出的是:
这是父类
这是子类
*/