1. 程式人生 > >java中呼叫父類方法之super關鍵字的疑惑?

java中呼叫父類方法之super關鍵字的疑惑?

在java中有super和this這2個關鍵字,我有時候對super有一些疑惑,我甚至認為我對super和this這2個關鍵字還沒理解!大家請看下面的程式碼,幫我解惑一些唄!謝謝

package com.jiongmeng;

class Father {

	String name;
	int age;

	public void test() {
		System.out.println("我是父類的test()方法");
		System.out.println("父類姓名=" + this.name + " 父類年齡=" + this.age);
	}

}

public class Son extends Father {

	public void test() {
		/**
		 在Son類的test()方法中的super.test();這行程式碼的意思是呼叫父類的test()方法,我對這行程式碼有點疑
		 惑,super代表父物件,那麼很明顯,就是去呼叫Father類中的test()方法,那麼此時,在執
		 行到Father類中的test()方
		 法中的System.out.println("父類姓名=" + this.name + " 父類年齡=" + this.age);這行程式碼的時候,這
		 行程式碼中的this表示的是父物件還是子物件(我們都知道this表示的是當前物件,我就想知
		 道此時this表示的當前物件到底是父類物件還是子類物件),知道的人請幫忙解答下?謝謝!
		 */
		super.test();
		System.out.println("我是子類的test()方法");
		System.out.println("子類姓名=" + this.name + " 子類年齡=" + this.age);
	}

	public static void main(String[] args) {
		Son son = new Son();
		son.name = "楊過";
		son.age = 12;
		son.test();
	}

}


特意debug除錯跟蹤了一下


在Son類的test()方法中的super.test();這行程式碼的意思是呼叫父類的test()方法,我對這行程式碼有點疑惑,super代表父物件,那麼很明顯,就是去呼叫Father類中的test()方法,那麼此時,在執行到Father類中的test()方法中的System.out.println("父類姓名=" + this.name + " 父類年齡=" + this.age);這行程式碼的時候,這行程式碼中的this表示的是父物件還是子物件(我們都知道this表示的是當前物件,我就想知道此時this表示的當前物件到底是父類物件還是子類物件),知道的人請幫忙解答下?謝謝!說一下你們是怎麼理解這裡的super和this的,解釋下原因和你們對這裡的理解!