1. 程式人生 > >java繼承總結(二)

java繼承總結(二)

接口 animal 修改 什麽 類的繼承 ext pen nim main

java學習筆記

1.繼承

關鍵字:

extends

Java 中,類的繼承是單一繼承,也就是說,一個子類只能擁有一個父類,所以 extends 只能繼承一個類.

eg:

public class Penguin extends Animal

{

}

implements

使用 implements 關鍵字可以變相的使java具有多繼承的特性,使用範圍為類繼承接口的情況,可以同時繼承多個接口(接口跟接口之間采用逗號分隔)。

eg :

public interface A {

public void eat();

public void sleep();

}

public interface B {

public void show();

}

public class C implements A,B {

}

2.super 與 this 關鍵字

super關鍵字:我們可以通過super關鍵字來實現對父類成員的訪問,用來引用當前對象的父類。

this關鍵字:指向自己的引用。

3. final關鍵字

final 關鍵字聲明類可以把類定義為不能繼承的,即最終類;或者用於修飾方法,該方法不能被子類重寫:

聲明類:

final class 類名 {//類體}

聲明方法:

修飾符(public/private/default/protected) final 返回值類型 方法名(){//方法體}

4.構造器

子類不能繼承父類的構造器(構造方法或者構造函數),但是父類的構造器帶有參數的,則必須在子類的構造器中顯式地通過super關鍵字調用父類的構造器並配以適當的參數列表。

如果父類有無參構造器,則在子類的構造器中用super調用父類構造器不是必須的,如果沒有使用super關鍵字,系統會自動調用父類的無參構造器。

實例

class SuperClass {

private int n;

SuperClass(){

System.out.println("SuperClass()");

}

SuperClass(int n) {

System.out.println("SuperClass(int n)");

this.n = n;

}

}

class SubClass extends SuperClass{

private int n;

SubClass(){

super(300);

System.out.println("SubClass");

}

public SubClass(int n){

System.out.println("SubClass(int n):"+n);

this.n = n;

}

}

public class TestSuperSub{

public static void main (String args[]){

SubClass sc = new SubClass();

SubClass sc2 = new SubClass(200);

}

}

輸出結果為:

SuperClass(int n)

SubClass

SuperClass()

SubClass(int n):200

修飾符

default (即缺省,什麽也不寫): 在同一包內可見,不使用任何修飾符。使用對象:類、接口、變量、方法。

private : 在同一類內可見。使用對象:變量、方法。 註意:不能修飾類(外部類)

public : 對所有類可見。使用對象:類、接口、變量、方法

protected : 對同一包內的類和所有子類可見。使用對象:變量、方法。 註意:不能修飾類(外部類)。

1.聲明為私有訪問類型的變量只能通過類中公共的 getter 方法被外部類訪問。2.Private 訪問修飾符的使用主要用來隱藏類的實現細節和保護類的數據。

3.如果幾個相互訪問的 public 類分布在不同的包中,則需要導入相應 public 類所在的包。由於類的繼承性,類所有的公有方法和變量都能被其子類繼承。

4.被聲明為 protected 的變量、方法和構造器能被同一個包中的任何其他類訪問,也能夠被不同包中的子類訪問。

protected 訪問修飾符不能修飾類和接口,方法和成員變量能夠聲明為 protected,但是接口的成員變量和成員方法不能聲明為 protected

子類能訪問 protected 修飾符聲明的方法和變量,這樣就能保護不相關的類使用這些方法和變量。

父類中聲明為 public 的方法在子類中也必須為 public

父類中聲明為 protected 的方法在子類中要麽聲明為 protected,要麽聲明為 public,不能聲明為 private

父類中聲明為 private 的方法,不能夠被繼承。

非訪問修飾符

為了實現一些其他的功能,Java 也提供了許多非訪問修飾符。

static 修飾符,用來修飾類方法和類變量。

final 修飾符,用來修飾類、方法和變量,final 修飾的類不能夠被繼承,修飾的方法不能被繼承類重新定義,修飾的變量為常量,是不可修改的。

abstract 修飾符,用來創建抽象類和抽象方法。

synchronized volatile 修飾符,主要用於線程的編程。

java繼承總結(二)