package test;
public class test_default_equals {
int val;
public static void main(String[] args) {
// TODO Auto-generated method stub
//A a = new A()
String str1="zyh";
A a = new A(100);
A b = new A(100);
if(a.equals(b))
System.out.print(666);
}
test_default_equals(){
f();
}
void g() {
f();
}
void f() {
System.out.println("Parent");
}
}
class A extends test_default_equals{
private int i = 10;
//int value = 100;
//private String str;
void f() {
i = 100;
System.out.print(666+i);
}
A(int i){
this.i = i;
//this.str = str;
}
public static void main(String[] args) {
test_default_equals asd = new A(0);
//(asd).f();
asd.f();//调用的是子类的f()函数
}
}
提醒:
Java的语法特性中,在构造函数内调用多态方法,是能够实现动态绑定的,这与C++不同,C++中的构造函数和析构函数调用虚函数,是不能实现多态的。
可能与C++支持多重继承有关系吧,或者是Java在创建子类时,在调用父类的构造方法之前,子类的成员已经初始化好,
以上解释仅是个人猜测!