20155327 java第四周學習筆記

20155327 java第四周學習筆記

五六章知識整理

1子類與父類

父類是接口或者是抽象類,子類必須繼承自父類。html

2子類的繼承性

在Java中,經過關鍵字extends繼承一個已有的類,被繼承的類稱爲父類(超類,基類),新的類稱爲子類(派生類)。在Java中不容許多繼承。java

3子類與對象:

1.子類要爲父類的私有屬性單獨的在堆裏開闢空間,這個空間不屬於任何一個對象,緣由是私有屬性要使用必需要有個空間,並默認初始化,不會爲父類的私有方法在堆裏開闢空間,緣由是私有方法在方法區。
2.爲子類開闢空間,爲繼承自父類的屬性開闢空間,併爲在父類裏定義的、子類繼承的方法開闢方法空間,而後爲子類新增的方法開闢空間,(繼承的方法的空間和新增的屬性和方法的空間)
3.必定會把子類的對象地址傳到父類的構造方法,調用父類的構造方法,到類裏頭綁定的屬性尋找並初始化,爲子類繼承的屬性私有化,和爲子類不能繼承的屬性私有化。若父類的構造方法是私有的,則子類對象不能建立,編譯會出錯
4.調用子類的構造方法能夠初始化子類新增的屬性,和繼承父類的屬性和方法初始化。git

4成員變量的隱藏和方法重寫

在Java的子類與父類中有兩個名稱、參數列表都相同的方法的狀況。因爲他們具備相同的方法簽名,因此子類中的新方法將覆蓋父類中原有的方法。編程

正是由於Java在繼承中有方法的重寫,因此,這也體現了Java的動態多態性。學習

5繼承與多態

  • 繼承:是對有着共同特性的多類事物,進行再抽象成一個類。這個類就是多類事物的父類。父類的意義在於抽取多類事物的共性。java中的繼承要使用extends關鍵字,而且java中只容許單繼承,也就是一個類只能有一個父類。測試

  • 多態,把子類對象主觀的看做是其父類型的對象,那麼父類型就能夠是不少種類型。實現多態,有二種方式,覆蓋,重載。ui

關係:繼承能夠複用代碼,更大的用處是實現「多態」
封裝是繼承的基礎,繼承是多態的基礎
「用父類聲明對象引用,用子類生成對象」就有了多態命令行

接口

接口是功能的集合,一樣可看作是一種數據類型,是比抽象類更爲抽象的」類」。調試

接口只描述所應該具有的方法,並無具體實現,具體的實現由接口的實現類(至關於接口的子類)來完成。
接口中成員的特色code

一、接口中能夠定義變量,可是變量必須有固定的修飾符修飾,public static final 因此接口中的變量也稱之爲常量,其值不能改變。後面咱們會講解fnal關鍵字

二、接口中能夠定義方法,方法也有固定的修飾符,public abstract

三、接口不能夠建立對象。

四、子類必須覆蓋掉接口中全部的抽象方法後,子類才能夠實例化。不然子類是一個抽象類。

接口與多態

A:類與類之間:繼承關係,一個類只能直接繼承一個父類,可是支持多重繼承

B:類與接口之間:只有實現關係,一個類能夠實現多個接口

C:接口與接口之間:只有繼承關係,一個接口能夠繼承多個接口
碼雲

課堂實踐

實踐一

0 在Ubuntu中用本身的有位學號建一個文件,教材p29 Example2_5

  1. 修改代碼a[]中添加本身的學號,輸入的數據中要有本身的學號
  2. 提交運行結果截圖,要有找到和找不到的狀況,要對邊界值進行測試

實踐二

0 在Ubuntu中用本身的有位學號建一個文件,教材p45 Example3_7

  1. 修改代碼中的100爲本身學號的後四位,輸入的數據中要有本身的學號
  2. 提交運行結果截圖

實踐三

參考http://www.cnblogs.com/rocedu/p/6766748.html 編程實現1!+2!+3!+... + N!的功能

N由命令行傳入,好比類名爲SumofRecur, java SumofRecur 8 給出1!+2!+3!+... + 8!的值

提交運行結果的截圖(至少五張),注意測試正常,異常,邊界狀況, 好比java SumofRecur -8,java SumofRecur 0,java SumofRecur 你的學號後四位


命令行參數:Java程序運行時,會調用main方法,args就是命令行參數。
代碼以下:

public class test3 {
  public static void main(String args[]){
   int tmp[]=new int [args.length];
   for(int i=0;i<args.length;i++){
       tmp[i]=Integer.parseInt(args[i]);
   }
   long sum=0;
   if(tmp[0]<=0){
     System.out.println("wrong!");
     System.exit(0);
   }
   for(int i=1;i<=tmp[0];i++){
       sum += fact(i);
   }
    System.out.println(sum);
  }
   public static long fact(int i) {
   if(i==1)
   return 1;
   else 
   return i * fact(i-1);
   }
}

把代碼推送到

實踐四

1 參考 http://www.cnblogs.com/rocedu/p/6371262.html 調試上一個程序
2 經過命令行傳入3
3 提交N=1 , N=2, N=3時的結果截圖

JDB調試步驟:

1,使用javac -g test3.java對程序進行編譯。注意javac中-g參數是爲了產生各類調試信息,必定要加上,不然沒法調試。
2,使用jdb test3 N對程序進行調試
3,經過運行stop in test3.main命令在main方法開始處設置斷點
4.輸入run命令來運行test3.class,程序會在main()的開始處停下。能夠用locals命令查看變量,用step命令運行下一行代碼
5.使用quit或exit能夠退出JDB。



相關文章
相關標籤/搜索