關於繼承

子類能繼承父類的那些方法

子類是對父類的一種擴展,子類會從父類繼承絕大多數的方法,可是具體有那些呢,又有那些不能被子類繼承呢,本文主要就是我爲了總結而寫的,可能會不全。code

首先子類不能繼承父類用private修飾的私有方法

package com.z.extend;

public class TestExtendsTwo {
public static void main(String[] args) {
person person=  new person();
person.eat();
}
}
class Dog {
private void eat() {
    System.out.println("狗吃?");
}  
}
class BlackDog extends Dog{

}

如上代碼當你嘗試調用父類的私有方法時會提示你找不到這個方法,同理被final修飾的方法也不能找到blog

子類也不能繼承父類的構造方法

package com.z.extend;

public class TestExtends {
public static void main (String[] args) {
    student st= new student();
}
}

class person {
public  person() {
    System.out.println("這是一我的");
}
}
class student extends person{
public student() {
    System.out.println("這是一個學生");
}
//  public  person() {
//      
//  }
}

當你寫出以下代碼是出現這樣好像子類能繼承父類的構造方法,是這樣嗎?繼承

如今咱們把我註釋掉的代碼打開接口

報錯了! 若是子類繼承了父類,那爲何不能重寫方法呢?class

實際上實例代碼中子類並無繼承父類的構造方法,在最開始好像繼承了,是由於子類在寫構造方法的時候默認在構造方法的最前列有一行super() 所以在實例化構造的時候回調用父類的構造,並非繼承了父類的構造擴展

子類能不能繼承父類中實現了接口的方法

固然能,在父類實現接口的時候,實現接口的方法其實就已是一個父類的普通方法了,既然不特殊有有什麼資格不被子類鎖繼承呢,答案是確定的。List

關於接口和子類還有一個比較有趣的現象,子類和父類同時實現了同一個接口方法

這中狀況並非沒有的,好比ArrayList實現了List這個接口,ArrayList的抽象父類AbstractList一樣實現了List接口。這種狀況子類並不須要特地的去重寫接口中的抽象方法,由於父類已經幫忙作了這個操做,就想上面說了,接口中的抽象方法被重寫後就至關因而一個普通的方法,因此這個方法其實已經被子類繼承,就算咱們不特地重寫,它也是被重寫過的(雖然是和父類同樣)im

相關文章
相關標籤/搜索