Java介面與陣列

啊剛發表於2018-05-14

介面

介面可以理解為一種特殊的類,由全域性成量和公共的抽象方法所組成。

類是一種具體實現體,而介面定義了某一批類所需要遵守的規範,介面不關心這些類的內部資料,也不關心這些類裡方法的實現細節,它只規定這些類裡必須提供某些方法。

介面定義

和類定義不同,定義介面不在使用class關鍵字,而是使用interface關鍵字。

介面定義的基本語法

[修飾符] interface 介面名

{ 零個到多個常量定義。。。

零個到多個抽象方法的定義。。。。

}

介面中的方法只能是抽象方法,總是使用,即使定義時不新增 public abstract 修飾符。系統也會自動加上。

介面使用

一個類可以實現一個或多個介面,實現介面使用implements

關鍵字。java中一個類只能繼承一個父類,是不夠靈活的,通過實現多個介面可以做補充。

繼承父類實現介面語法

[修飾符] class 類名 extends 父類 implements 介面1 ,介面2

{ 類體部分//如果繼承了抽象類,需要實現繼承的 抽象方法;要實現介面的抽象方法。 }

如果要繼承父類,繼承父類必須在實現介面之前

Java介面與陣列

介面的使用

介面在使用過程中,還經常與匿名內部類配合使用 匿名內部類就是沒有名字的內部類 多用於關注實現而不關注實現類的名字

介面與類的區別

  • 介面不能用於例項化物件。
  • 介面沒有構造方法。
  • 介面中所有的方法必須是抽象方法。
  • 介面不能包含成員變數,除了 static 和 final 變數。
  • 介面不是被類繼承了,而是要被類實現。
  • 介面支援多繼承

練習題

練習題一: 中國特色社會主義的體制中有這樣的現象:地方省政府要堅持黨的領導和按

照國務院的指示進行安全生產。請編寫一個java應用程式描述上述的體制現象。

要求如下:

(1)該應用程式中有一個“黨中央”介面:CentralPartyCommittee,該介面中

有個“堅持黨的領導”方法:void partyLeader()

(2)該應用程式中有一個“國務院”抽象類:StateCouncil,該抽象類中有個“安

全生產”的抽象方法:abstract void safetyInProduction()

(3)該應用程式中有一個“省政府”類:Province,該類繼承StateCouncil抽象

類並且實現CentralPartyCommittee介面;在實現partyLeader()方法時輸出“我們

各省人民一定堅持黨的領導!”;在重寫safetyInProduction()方法時輸出“我們各

省人民一定按照國務院的指示進行安全生產!”。

(4)該應用程式中有一個主類E,在主類E的main方法中建立Province類的對

象,來測試Province類的功能。

程式程式碼:

public interface CentralPartyCommittee {

void partyLeader( );
複製程式碼

}

public abstract class StateCouncil {

abstract void safetyInProduction();
複製程式碼

}

public class Province extends StateCouncil implements CentralPartyCommittee{

public void partyLeader() {
    System.out.println("我們各省人民一定堅持黨的領導!");
}

@Override
public void safetyInProduction() {
    System.out.println("我們各省人民一定按照國務院的指示進行安全生產!");
}
複製程式碼

}

public class E { public static void main(String[] args) {

CentralPartyCommittee centralPartyCommittee=new Province();
centralPartyCommittee.partyLeader();
}
複製程式碼

}

練習題: 按如下要求編寫Java程式:

(1)編寫介面InterfaceA,介面中含有方法void printCapitalLetter()。

(2)編寫介面InterfaceB,介面中含有方法void printLowercaseLetter()。

(3)編寫非抽象類Print,該類實現了介面InterfaceA和InterfaceB。要求printCapitalLetter()方法實現輸出大寫英文字母表的功能,printLowercaseLetter()方法實現輸出小寫英文字母表的功能。

(4)再寫一個主類Test,在main方法中建立Print的物件並賦值給InterfaceA的變數a,由變數a呼叫printCapitalLetter方法,然後再建立Print的物件並將該物件賦值給InterfaceB的變數b,由變數b呼叫printLowercaseLetter方法。

public interface InterfaceA {

void printCapitalLetter();
複製程式碼

}

public interface InterfaceB {

void printLowercaseLetter();
複製程式碼

}

public class Print implements InterfaceA,InterfaceB {

@Override
public void printCapitalLetter() {
    System.out.println("ZXCVBNMASDFGHJKLQWERTYUIOP");

}

@Override
public void printLowercaseLetter() {
    System.out.println("zxcvbnmasdfghjklqwertyuiop");

}
複製程式碼

}

public class Test {

public static void main(String[] args) {

  InterfaceA a=new Print();
  a.printCapitalLetter();
  InterfaceB b=new Print();
  b.printLowercaseLetter();

}
複製程式碼

}

陣列

1.宣告資料 語法:資料型別[] 陣列名:

或者:資料型別 陣列名[]

:int[] scores;

2.分配空間 簡單的說,就是指定陣列中最多可儲存多少個元素

語法

陣列名 = new 資料型別[陣列的長度] scores = new int[5];

3.賦值

分配空間後就可以向陣列放資料了,陣列中元素都是通過下標來訪問的。例如scores陣列中存放學生成績

scores[0] = 89;

scores[1] = 79;

4.處理陣列中資料

我們可以對賦值後的資料進行操作和處理,如獲取並輸出陣列中元素的值 System.out.print(scores[0]);

習題練習

用陣列列印abc

public class abc { public static void main(String[] args) {

    String[] sun;
    sun = new String[3];
    sun[0]="A";
    sun[1]="B";
    sun[2]="C";
    System.out.println(sun[0]);
    System.out.println(sun[1]);
    System.out.println(sun[2]);
複製程式碼

} }

運算陣列的和與平均值

public static void main(String[] args) {
    int[] sun;
    sun = new int[3];
    sun[0] = 10;
    sun[1] = 20;
    sun[2] = 30;

    int shun = 0;

    for (int i = 0; i < sun.length; i++) {
        shun = sun[i] + shun;
    }
    System.out.println(shun);
    System.out.println(shun/sun.length);
複製程式碼

解析:

package tuxing;這句是打包語句,

public class lingxing 這是宣告一個公有的類

public static void main(String[] args)這是主函式,Java程式執行的入口

int a[]={2,4,5,7,5},i,s;這裡宣告瞭一個int型陣列a併為其制定元素值,還宣告瞭兩個int型變數i,s;

s=0;為s付初始值0;

for(i=0;i<5;i++)for迴圈語句i=0是為上面宣告的int型變數i付初始值,i<5是判斷i是否小於5,i++是每次執行後i自動加1

s += a[i]; 是求int陣列a的五個元素的和,(因為for迴圈內只有一條語句所以可以吧for(){}後面的{}省略)

System.out.print(s);這是在控制檯列印出s的值

如果是失球平均值緊要換成System.out.print(s/5); 解析完。

例子:

    // 反序輸出{我愛你}

    char[] love;
    love = new char[3];
    love[0] = '我';
    love[1] = '愛';
    love[2] = '你';
    for (int i = love.length - 1; i >= 0; i--) {
        System.out.print(love[i]);
複製程式碼

相關文章