C++和JAVA中子類父類同名方法調用的結果

C++和JAVA中子類父類同名方法調用的結果


子類的函數A中調用父類的函數B,函數B中調用函數C,子類中存在函數C的覆寫函數D,此時父類的方法會去調用子類的實現D。

C++

#include <iostream>
using namespace std;

class Pop
{
public :
	virtual void set()
	{
		res();
	}
	virtual void res()
	{
		cout << "this is A" << endl;
	}
};
class Per : public Pop
{
public :
	void set()
	{
		Pop::set();//非靜態函數調用,爲調用父類的同名方法,爲了表明作用域用此方法調用
	}
	void res()
	{
		cout << "this is B" << endl;
	}

};

int main() {
	Per per;
	per.set();//thia is B
	return 0;
}




JAVA

public class Demo {
	public static void main(String[] args) {
		Per per= new Per();
		per.set();// this is B
	}

}

class Pop {
	public void set() {
		res();
	}
	public  void res() {
		System.out.println("this is A");
	}
}

class Per extends Pop{
	@Override
	public void set() {
		super.set();
	}
	@Override
	public void res() {
		System.err.println("this is B");
	}
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章