1. 程式人生 > >java 繼承中的重寫父類方法

java 繼承中的重寫父類方法

重寫父類方法

子類擴充套件(extends)了父類,子類是一種特殊的父類。子類可以獲得父類所有的屬性和方法,達到程式碼複用的目的。子類總以父類為基礎增加新的屬性和方法。但是有時候我們還需要重寫(覆蓋)父類的方法。

子類覆蓋父類的方法遵循的是“兩同兩小一大”原則。兩同指的是方法名和形參列表相同。兩小指的是子類方法的返回值型別要小於或等於父類被覆蓋方法的返回值,子類方法宣告丟擲的異常應比父類方法丟擲的異常要小或相等。一大指的是子類方法的訪問許可權應該比父類方法要大或相等。尤其要注意的是,覆蓋方法和被覆蓋方法要麼都是類方法,要麼都是例項方法,不能一個是類方法,一個是例項方法,否則回報編譯錯誤。程式碼如下:

class SuperClass{

    public  void test(){}

    public void test1(){}
}

class  SubClass extends SuperClass{

    //註釋掉了,編譯時會報This static method cannot hide the instance method from SuperClass
    //public static void test(){}   

    @Override
    public void test1(){}
}

如果父類方法具有private訪問許可權,則該方法對子類是隱藏的,子類是不能訪問到的,也不能覆蓋該方法。如果子類定義了與父類private方法相同的方法名,則該子類只不過是新定義了一個方法而已。

子類和父類方法的過載

方法過載 overload,方法重寫override。方法過載是發生在同一個類中多個同名法之間。方法重寫是發生在父類和子類的同名方法之間。
子類擁有父類所有的方法,如果子類也定義了和父類方法名形同,但形參列表不同的方法,那麼就發生了子類方法和父類方法的過載。程式碼如下:

public class ExtendsTest {
    public static void main(String [] args){
        SubClass sub = new SubClass();
        sub.print("ABC");
        sub.print
("ABC", "DEF"); } } class SuperClass{ public void print(String s1){ System.out.println(s1); } } class SubClass extends SuperClass{ public void print(String s1, String s2){ System.out.println(s1+"、"+s2); } }

相關推薦

java 繼承重寫方法

重寫父類方法 子類擴充套件(extends)了父類,子類是一種特殊的父類。子類可以獲得父類所有的屬性和方法,達到程式碼複用的目的。子類總以父類為基礎增加新的屬性和方法。但是有時候我們還需要重寫(覆蓋)父類的方法。 子類覆蓋父類的方法遵循的是“兩同兩小一大”原

JAVA中子是否可以可以繼承重寫的靜態方法--總結

今天刷題的時候看到一個問題:JAVA中子類是否可以可以繼承父類的靜態方法,自己實驗了一下,也找了找別人的看法,總結一下吧: 子類可以繼承父類的靜態方法,意思是可以呼叫,但前提是父類此方法對子類可見

Java中子重寫方法

子類重寫父類方法 子類可以繼承父類的很多特性,但是在有些時候,父類提供的方法會出現不適用的情況,比如之前的例子裡, print() 方法就沒有打印出狗狗的品種,這種情況下就可以通過重寫父類的方法來解決問題,給它打印出來。 父類Pet類的程式碼不需要改變,在子類Dog類的基礎上作改動即

再探Java方法重寫方法遵循“兩同兩小一大”規則

今天在牛客碰到這樣一道題: class A { public A foo() { return this; } } class B extends A { public A foo() { return this; } } class C extends

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

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

java中子重寫方法要注意的問題

子類不能重寫父類的靜態方法,私有方法。即使你看到子類中存在貌似是重寫的父類的靜態方法或者私有方法,編譯是沒有問題的,但那其實是你重新又定義的方法,不是重寫。具體有關重寫父類方法的規則如下:重寫規則之一:重寫方法不能比被重寫方法限制有更嚴格的訪問級別。 (但是可以更廣泛,比如

Java繼承時,的this指向子物件

程式碼如下 父類 public class Car {public void fool() {System.out.println("Car:fool1");}public void foo2() {this.fool();System.out.println("Car:f

繼承重寫方法,運用多型時呼叫重寫方法時呼叫子的還是呼叫的?

package 第五天; public class Person { public void say() { System.out.println("我是Person的say方法"); } } 子類Student如下: package 第五天; publ

Python 在子呼叫方法詳解(單繼承、多層繼承、多重繼承

測試環境: win7 64位 Python版本:Python 3.3.5 程式碼實踐: 1、在子類中通過“類名”呼叫父類的方法 class FatherA: def __init__(self): print('init

繼承中子重寫方法必須滿足條件

一、描述 子類重寫(覆蓋)父類的方法必須滿足的條件: 1.父類中的方法在子類中必須可見,即子類繼承了父類中的該方法(可以顯式的使用super關鍵字來訪問父類中的被重寫的方法), 如果父類中的方法為private型別的,那麼子類則無法繼承,也無法覆蓋。 2.子類和父類的方

java 帶有exception的方法覆蓋問題

java 帶有exception的父類方法覆蓋問題父類中的方法拋異常,子類如果想覆蓋方法只可以拋同樣的異常或那個異常的子類或不拋異常,原因很簡單,考慮到多形性,我們經常會利用父類的引用調用方法,並根據父類方法的定義捕獲異常,當我們把子類的對象傳給父類引用,如果父類的方法被子類覆蓋且拋出了不同的異常,那該異常就

STS 重寫方法的操作

按鈕 com ali nbsp source 自己的 ner code pre   本來這種東西真的沒什麽好寫的,但是很多時候真的是要用到的,不知道的話自己手動敲,會累死人的。所以記錄在這裏,自己的筆記,有需要的趕緊拿去,省的手動錄入那麽辛苦。   在代碼窗口點擊右鍵,

python之重寫方法

object 重寫 user 構造 一句話 utf8 一模一樣 幫助 utf python之重寫父類方法 修改父類的方法重寫父類的方法的目的是為了給他擴展功能,父類的方法已經不能滿足需求核心思想就一句話,先調用一下你要重寫的父類方法, class Coon(object)

重寫方法,重寫方法與呼叫方法

class Animal: def eat(self): print("-----吃-----") def drink(self): print("-----喝-----") class Dog(Animal): def bark(self): print("-----汪汪

重寫方法

class Goods{ public $goods_name; public function __construct($g_name){ $this->goods_name = $g_name; } } class Book extends Goods{

重寫方法後的呼叫規則

例題: (單選題) 下面程式碼的輸出是什麼? publicclass Base {       private String baseName= "base";       public Base(){           callName();       

重寫方法注意

子類重寫父類的方法應注意的問題 若想實現一個合格重寫方法,而不是過載,那麼必須同時滿足下面的要求!重寫規則之一:重寫方法不能比被重寫方法限制有更嚴格的訪問級別。 (但是可以更廣泛,比如父類方法是包訪問許可權,子類的重寫方法是public訪問許可權。)比如:Object類

SubClasing用法--子重寫方法直接呼叫實現方式

subclasing 淺談 --  父類和子類之間進行訊息傳遞的一種實現 繼承:一個派生類可以從一個基類派生,這個派生類就是子類,當子類繼承父類之後,可以重寫父類的方法或者直接呼叫父類的方法,即子類擁有父類的所有功能並且可以進行功能的擴充套件,我們通過繼承可以實現低耦合和程

【暑假學習筆記】之——用Intellij idea新建一個java web+Servlet專案(有例項)——idea快速重寫方法

Intellij idea中快速重寫父類方法 在寫java檔案時,有時候需要重寫父類方法,但在idea中建立java檔案時並不會像eclipse一樣可以選擇父類,但是重寫父類方法其實只需要這樣做: 滑鼠點選確定程式碼插入位置,使用快捷鍵CTRL+O,就會彈出選擇方法的視窗

Java繼承方法重寫(或者覆蓋,override)

1、子類重寫父類方法的方法名、引數型別必須與父類被重寫(被覆蓋)的方法相同; 2、子類方法的返回值型別必須小於等於父類被重寫的方法的返回值型別; 3、子類丟擲的異常小於等於父類方法丟擲的異常; 4