關於繼承和實現介面的心得
阿新 • • 發佈:2018-12-10
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");
}
}