java中呼叫父類方法之super關鍵字的疑惑?
阿新 • • 發佈:2018-12-31
在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的,解釋下原因和你們對這裡的理解!