5.7
5.7
Java 中的构造方法调用顺序
如果子类没写 super,默认先执行父类的无参构造方法
类型转换
boolean result = 子 instanceof 父,返回true,用于判断是否继承
Person tom = new Student();
//向上转型,先声明一个父类,再实例化子类,把student tom当成人看
Person jack = new Docter();
Doctor dr = (Doctor)tom;
//会报错
Doctor dr = (Doctor)jack;
//可以
//向下转型,强制转
class A {
int i, j;
public void fun() {
i++;
j++;
}
}
class B extends A {
static int j;
public void func() {
int j = 2;
for (i = 0; i < 10; i++) {
j += 3;
fun();
}
System.out.println(super.i + this.j);
//super指向父类循环5次,历遍fun、func,i每次加2,结果为10
//this指向B中(子类静态)为0
System.out.println(i + "" + j);
//""表字符串拼接,10+17=1017
}
}
class Main {
public static void main(String[] args) throws Exception {
B b = new B();
b.func();
}
}
this() 和 super()
- 在 Java 中,子类的构造方法如果要调用父类的构造方法,
super()必须放在第一行。这是为了确保在子类初始化自己的特有成员之前,父类的成员已经正确初始化完毕了。 this()和super()不能同时出现在同一个构造函数中。- 无论是
this()还是super(),只要出现在构造方法中,就必须放在第一行。 this和super指向的都是具体的对象实例。不可以在static静态中使用
访问权限
private: 只有本体能看。
default (无修饰符): 只有同一个家(包)的人能看。
protected: 自己家、亲戚家(子类)都能看。
public: 全世界都能看。
方法重写
如果子类想要重写父类的 method,必须遵守 “两同两小一大” 原则:
- 一大:子类方法的访问权限必须 大于或等于 父类。父类是
protected,所以子类必须是protected或public。 - 两同:方法名相同,参数列表完全相同。
- 两小:返回值类型和抛出的异常必须更小或相等。

浙公网安备 33010602011771号