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()

  1. 在 Java 中,子类的构造方法如果要调用父类的构造方法,super() 必须放在第一行。这是为了确保在子类初始化自己的特有成员之前,父类的成员已经正确初始化完毕了。
  2. this()super() 不能同时出现在同一个构造函数中。
  3. 无论是 this() 还是 super(),只要出现在构造方法中,就必须放在第一行。
  4. thissuper 指向的都是具体的对象实例。不可以在static静态中使用

访问权限

private: 只有本体能看。

default (无修饰符): 只有同一个家(包)的人能看。

protected: 自己家、亲戚家(子类)都能看。

public: 全世界都能看。

方法重写

如果子类想要重写父类的 method,必须遵守 “两同两小一大” 原则:

  • 一大:子类方法的访问权限必须 大于或等于 父类。父类是 protected,所以子类必须是 protectedpublic
  • 两同:方法名相同,参数列表完全相同。
  • 两小:返回值类型和抛出的异常必须更小或相等。
posted @ 2026-05-07 18:37  shitnotme  阅读(4)  评论(0)    收藏  举报