簡體   English   中英

Java-在繼承中,無需創建類即可調用方法

[英]Java- In inheritance, method can be invoked without creating a class

我有父類和子類,其中父類具有method- getData 無論是否創建對象,我都可以直接從子類中調用此方法。 我想知道如何在不創建對象的情況下在子類中使用該方法。 (這也不是靜態方法)據我了解,我們必須創建一個對象來訪問方法。 誰能解釋為什么?

 public class testbase {

    public void getData(String Data) throws IOException{
        Properties prop1;

        prop1= new Properties();
        FileInputStream f= new FileInputStream("C:\\file.properties");
        prop1.load(f);


        String data= prop1.getProperty(Data);
        System.out.println(data);
    }

}


class testproperties_file extends testbase {

    @Test
    public void test_class() throws IOException{
        getData("name");

    }
}

按照

https://docs.oracle.com/javase/tutorial/java/IandI/subclasses.html

子類從其超類繼承所有成員(字段, 方法和嵌套類)。 構造函數不是成員,因此它們不會被子類繼承,但是可以從子類中調用超類的構造函數。

我建議你閱讀更多的奧伯inheritance

子子級從其父類繼承所有成員方法。

如果執行控制到達任何非靜態方法,則意味着創建了一個對象,並在該對象上調用了該方法。 this是對當前執行的對象的隱式引用,在該對象上調用任何方法。 由於派生類的對象具有超類的行為,因此,根據實際派生類的定義會添加更多的行為,並且如果任何行為被覆蓋,則從超類繼承的行為也會被修改。

我想知道如何在不創建對象的情況下在子類中使用該方法。

class testproperties_file extends testbase {
    @Test
    public void test_class() throws IOException{
       getData("name");

    }
}

這里的test_class()是一個實例方法。 這意味着在此方法中調用的所有代碼都可以調用可用於當前類實例(此處為testproperties_file )的方法。 因此,執行此方法時您已經在對象中。

testproperties_file的實例從testbase類繼承。
這意味着可以在此處調用testbase所有公共實例和受保護實例方法。 testbase的公共getData()實例方法是如此可調用。


附帶說明一下,您應該使用大寫字母和駝色字母命名類。 TestBaseTestPropertiesFile遵循Java編碼約定,因此更好。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM