[英]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()
實例方法是如此可調用。
附帶說明一下,您應該使用大寫字母和駝色字母命名類。 TestBase
和TestPropertiesFile
遵循Java編碼約定,因此更好。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.