public static void main(String[] args) {
    A a = new A();
    a.say(); // a
    B b = new B();
    b.say(); // b

    A a1 = new B();
    // b 根据事例化的对象类型判断调用哪个函数,而不是根据引用类型,
    // 即根据运行时指向的对象决定
    // 对比c++中的虚函数与普通函数
    // 普通函数:根据指针或者引用的类型决定
    // 虚函数:跟java一样
    a1.say();

    System.out.println(a instanceof A);
    System.out.println(a instanceof B); // false
    System.out.println(b instanceof A);
    System.out.println(b instanceof B);
    System.out.println(a1 instanceof A);
    System.out.println(a1 instanceof B);
  }