Java学习笔记汇总

2021-09-11  本文已影响0人  leilifengxingmw

待学习

...

Java多态的实现机制是什么

  1. 子类继承父类并覆写了父类的方法,当以父类声明并初始化一个子类型的时候,在运行的时候,是怎么找到子类,并调用子类的方法的。答案:方法表。

参考链接:

Java类初始化顺序

对于一个类而言,按照如下顺序执行:

当涉及到继承时,按照如下顺序执行:

  1. 执行父类的静态代码块,并初始化父类静态成员变量
  2. 执行子类的静态代码块,并初始化子类静态成员变量
  3. 执行父类的构造代码块,执行父类的构造函数,并初始化父类普通成员变量
  4. 执行子类的构造代码块, 执行子类的构造函数,并初始化子类普通成员变量

参考链接:

Java对象的finalize方法

protected void finalize() throws Throwable { }

参考链接:Java学习笔记—— finalize() 方法

举个例子

public class TestFinalizeMethod extends GregorianCalendar {

    public static void main(String[] args) {
        Cake c1 = new Cake(1);
        Cake c2 = new Cake(2);
        Cake c3 = new Cake(3);
        Person person = new Person(c2);
        c2 = c3 = null;
        person = null;
        System.gc(); //调用Java垃圾收集器
    }

    static class Cake {

        private int id;

        public Cake(int id) {
            this.id = id;
            System.out.println(this.toString() + " id = " + id + " is created");
        }

        public void test() {
            System.out.println(this + " id = " + id + " test");
        }

        protected void finalize() throws java.lang.Throwable {
            super.finalize();  //finalize的调用方法
            System.out.println(this.toString() + " id = " + id + " is disposed");

        }

    }

    static class Person {

        Cake cake;

        public Person(Cake cake) {
            this.cake = cake;
        }

        @Override
        protected void finalize() throws Throwable {
            super.finalize();
            System.out.println(this + " finalize");
            cake.test();
        }
    }

}

输出结果

com.hm.base.TestFinalizeMethod$Cake@27c170f0 id = 1 is created
com.hm.base.TestFinalizeMethod$Cake@5451c3a8 id = 2 is created
com.hm.base.TestFinalizeMethod$Cake@2626b418 id = 3 is created
com.hm.base.TestFinalizeMethod$Person@71369540 finalize
com.hm.base.TestFinalizeMethod$Cake@5451c3a8 id = 2 test
com.hm.base.TestFinalizeMethod$Cake@2626b418 id = 3 is disposed
com.hm.base.TestFinalizeMethod$Cake@5451c3a8 id = 2 is disposed
上一篇 下一篇

猜你喜欢

热点阅读