⒈다형성에서 비정적 멤버 함수의 특징:
①컴파일 시: 참조 변수가 속한 클래스에 호출 메서드가 있는지 참조합니다. 존재하면 컴파일이 통과되고, 그렇지 않으면 컴파일이 실패합니다.
② 런타임 중: 객체가 속한 클래스에 호출 메서드가 있는지 확인합니다.
---------------------------------- --- ---
//간단히 말하면, 멤버 함수가 호출될 때 컴파일할 때는 왼쪽을 보고, 실행할 때는 오른쪽을 보세요. //
---------------------------------- --- -----
2. 다형성에서 같은 이름을 가진 변수의 특징: (ps: 다른 이름은 확인되지 않았습니다.)
컴파일이나 실행 여부에 관계없이 왼쪽(클래스)을 참조하세요. 참조 변수가 속한 클래스)
3. 다형성에서 정적 멤버 함수의 특징:
컴파일이나 실행 여부와 관계없이 왼쪽(참조 변수가 속한 클래스)을 참조합니다.
예:
Class Fu { int num=1; public void method1() { System.out.println("fu_1"); } public void method3() { System.out.println("fu_3"); } //静态方法(包括变量)不所属于对象,它绑定于所属的类,会在内存中提前加载出来 public static void method4() { System.out.println("fu_4"); } } Class Zi extends Fu { int num=2; public void method1() { System.out.println("zi_1"); } public void method2() { System.out.println("zi_2"); } public static void method4() { System.out.println("zi_4"); } } Class Duotaitest { public static void main (String [] args) { Fu f=new Zi (); f.method1(); //f.method2(); 此行代码若存在,则编译失败,Fu类中没此方法 f.method3(); f.method4(); System.out.println(f.num); Zi z= new Zi(); System.out.println(z.num); } /* 运行结果: zi_1 fu_3 fu_4 //静态方法不能被子类重写覆盖,若想调用子类中的静态方法(一般没这么用的,只是面试会用到)Zi.method4(类名.方法名) 1 2 */ }