1. 程式人生 > >關於繼承和實現介面的心得

關於繼承和實現介面的心得

1.繼承

關鍵字:extends

在java中,類約定只能單繼承,但是一個父類可以有多個子類。如果想要實現多繼承的只能進行縱向的,依次繼承;打個通俗的比方就是兒女只能有一個爸爸,爸爸及其姊妹只能有一個爺爺,但是爺爺可以有多個兒女,爸爸也可以有多個兒女,子女們接受了父親的一些個性和習慣,但是同時子女們也有屬於自己的個性和習慣。

程式碼例項:

//父類A
public class FatherA(){
    public void fatherA(){
        System.out.println("this is father A");
    }
}

//父類B
public
class FatherB(){ public void fatherB(){ System.out.println("this is father B"); } } //抽象類C public abstract class FatherC(){ public abstract fatherC_1(); public void fatherC_2(){ System.out.println("this is father C"); } } /* 繼承普通類 如果在這使用"extends fatherA,fatherB"實現多繼承, 則會報Syntax error on token ",", . expected ","是不被期望的,也就是約定中的只能單繼承 */
public class sonA() extends fatherA{ @Override public void A() { //可以重寫父類方法,也可以不重寫 System.out.println("this is sonA"); } } /* 繼承抽象類 必須重寫其中被 abstract 修飾的方法 */ public class sonB() extends FatherC{ @Override public void fatherC_1() { // TODO Auto-generated method stub
} }

2.實現介面

關鍵字:implements

介面,是java抽象型別的一種,本質上也是一種類。在我的理解裡,是把介面當成一個類中所有的方法都被abstract修飾詞修飾的抽象類(也就是所有的方法都是抽象的),如果要繼承這個特殊的抽象類,需要重寫其中所有的方法,而介面正是如此,當實現一個介面時,我們需要實現其中所有的方法。與類不同的是,介面是不受單繼承的約定限制的,介面可以實現多繼承,但是介面不能繼承類,因為介面中只能出現公共的靜態常量(public final static),公共的抽象方法(public abstract xx();),和靜態內部類。但是介面可以多繼承介面(可能是約定,這個我不太理解…),類也可以實現多個介面。

程式碼例項:

//介面A
public interface InterfaceA(){
    public void interfaceA();
}

//介面B
public interface InterfaceB(){
    public void interface();
}

//實現多個介面:實現接口裡所有的方法
public class A() implements InterfaceA,InterfaceB{
    @Override
    public void interfaceA() {
        System.out.println("this is interfaceA");
    }

    @Override
    public void interfaceB() {
        System.out.println("this is interfaceB");
    }
}
/*
介面的多繼承實現
*/
public interface InterfaceC() extends InterfaceA,InterfaceB{
    public void interfaceC();
}

/*
如果實現了多繼承了介面,則要重寫該介面多繼承的介面中所有的方法
*/
public class D implements InterfaceC{
    @Override
    public void interfaceA() {
        System.out.println("this is interfaceA");
    }

    @Override
    public void interfaceB() {
        System.out.println("this is interfaceB");
    }

    @Override
    public void interfaceC() {
        System.out.println("this is interfaceB");
    }
}

總結:

1.java的類中只能單繼承(extends)類或者是抽象類,但是可以實現(implements)多個介面

2.如果類繼承了抽象類,則必須重寫抽象類中的抽象方法

3.如果類實現了某個介面,則需要重寫介面中所有的方法

4.介面可以,且僅可以多繼承介面,不能實現介面