關於Java父類子類那點事

2021-06-09 22:47:04 字數 1300 閱讀 8857

1、父類中private的方法,可以被重寫,但是不能被繼承。如果被重寫了,那麼:父類 a=new 子類(),執行的時候,呼叫的是子類的private方法。測試**如下:

package static_;

public class m

private void testprivate()

}class t extends m

//// private void testprivate()

public void testp()

}下面是main函式所在:

package static_;

public class snippet

}上面**輸出是:private in t,說明呼叫了子類的private方法【**中的private方法被注釋掉了,請取消注釋】。

2、static方法可以被繼承,但是不能被覆蓋。覆蓋的含義是:父類 a= new 子類(),在a呼叫方法的時候,如果呼叫的是子類的方法,那麼說明父類的方法被覆蓋了。但是,看下面的**。

測試**如下:

package static_;

public class m

public void testpublic()

}class t extends m

public void testpublic()

}package static_;

public class snippet

}**輸出是:

public in t1

in m

說明,父類的public方法被覆蓋了。但是static方法呼叫的還是父類的。說明父類的方法不能被覆蓋。即使被重寫了,呼叫的時候還是會去呼叫父類的方法。除非直接t.test()指明呼叫子類的方法。

【這裡其實很明確會呼叫父類的static方法。因為m m=new t();,是以父類的形式呼叫的,而靜態方法是屬於類的,所以是呼叫的父類的static方法。如果t m=new t();,那麼呼叫的就必然是子類的static方法了。】

3、final方法不能被繼承,不能被覆蓋

package static_;

public class m

private void testprivate()

public final void testfinal() 

}class t extends m

private void testprivate()

public final void testfinal()

public void testp()

}上面紅色字型標註了會報出來的錯誤。

java 子類與父類

1.父類 注 f m1 是父類不被繼承的方法 f m2 父類被子類重寫的方法 public class father public void f m1 public void f m2 2.子類 注 f m3是子類的私有方法 f m2 子類重寫父類方法 public class sunextends...

關於Java中子類呼叫父類方法

當乙個類繼承於另乙個類,子類中沒有父類的方法時。用子類的物件呼叫方法時,會首先在子類中查詢,如果子類中沒有改方法,再到父類中查詢。當乙個方法只在父類中定義時,呼叫該方法時會使用父類中的屬性。如果該方法中又呼叫了其他方法,那麼還是按照之前的順序,先在子類中查詢,再在父類中查詢。package temp...

關於父類子類繼承關係

一.繼承 子類可以直接復用父類中的成員.子類繼承父類所有方法的宣告和實現 非私有的例項變數以及協議 繼承時要在.h中宣告一下 繼承具有單根性和傳遞性 繼承的根類 大多都繼承自 nsobject 類,所以在定義乙個類時,要繼承nsobject 類。繼承就是 優化公共部分交給父類 例如 person是父...