java學習(二)

學號 20189214 《Java程序設計》第二週學習總結

教材學習內容總結

java類

建立java對象須要相似的模板,即類(class)
java對象也擁有屬性和可以執行的動做。
屬性叫作字段(field),而動做叫做方法(method)
字段和方法都是可選的
類是java程序的基本構建模塊。java中的全部的程序元素,必須位於一個類中。一個公有類的定義必須存放在一個文件中,這個文件名要和類名相同。html

構造方法

每一個類至少有一個構造方法。若是沒有顯式地爲類定義構造方法,Java編譯器將會爲該類提供一個默認構造方法。
構造方法用於構建一個對象。與一個方法的不一樣在於構造方法不須要有返回值,甚至不須要有void類型的返回值。構造方法能夠沒有參數。java

類成員訪問控制修飾符

類成員(方法、字段、構造方法等)能夠具有4中訪問控制級別之一:學習

  • public 對全部類可見
  • protected 對本包和對全部子類可見
  • private 僅對本類可見
  • default 對本包可見

建立對象

  • 聲明:聲明一個對象,包括對象名稱和對象類型。
  • 實例化:使用關鍵字new來建立一個對象。
  • 初始化:使用new建立對象時,會調用構造方法初始化對象。

超類的構造方法

若是調用子類的構造方法來實例化一個子類時,spa

  1. 首先會調用父類的無參數構造方法
  2. 而後父類調用父類的構造方法。
  3. 直到調用到java.lang.Object類的構造方法。

import 關鍵字

爲了可以使用某一個包的成員,咱們須要在 Java 程序中明確導入該包。使用 "import" 語句可完成此功能。
在 java 源文件中 import 語句應位於 package 語句以後,全部類的定義以前,能夠沒有,也能夠有多條,其語法格式爲:設計

  • import payroll.*;
  • import payroll.Employee;

還能夠經過使用該類的徹底限定名稱3d

java.io.File.file = new java.io.File(filenames)

封裝和訪問控制

封裝(英語:Encapsulation)是指一種將抽象性函式接口的實現細節部份包裝、隱藏起來的方法。調試

封裝的優勢:code

  • 良好的封裝可以減小耦合。
  • 類內部的結構能夠自由修改。
  • 能夠對成員變量進行更精確的控制。
  • 隱藏信息,實現細節。

從一個靜態方法的內部,不能調用實例方法或實例字段。但從一個靜態方法中,能夠訪問其餘的靜態方法或靜態字段htm

聲明靜態引用變量,該變量會包含一個地址。可是引用的對象是存儲在堆中。靜態引用變量能夠在不一樣的對象之間共享相同的對象。對象

加載、鏈接和初始化

  1. JVM調用類中main方法
  2. JVM將java類的二進制表示加載到內存中。
  3. JVM加載鏈接其餘的類/接口。
  4. JVM初始化整個過程遞歸地進行。

    繼承

  5. 全部的java類都不用顯式地擴展一個父類,而是自動地繼承了java.lang.Object類
  6. 一個類只有擴展一個類,使用接口也能實現多繼承的效果。
  7. 將子類的一個實例賦值給父類的一個引用變量式合法的。
    class 父類 {
    }

    class 子類 extends 父類 {
    }

    方法覆蓋

    方法覆蓋(method overriding)是子類對父類的容許訪問的方法的實現過程進行從新編寫, 返回值和形參都不能改變。即外殼不變,核心重寫!
    重載規則(重寫):

  • 參數列表必須徹底與被重寫方法的相同;
  • 返回類型必須徹底與被重寫方法的返回類型相同;
  • 訪問權限不能比父類中被重寫的方法的訪問權限更低。例如:若是父類的一個方法被聲明爲public,那麼在子類中重寫該方法就不能聲明爲protected。將超類中的一個方法的可見性變高式容許的,減小式非法的。
  • 父類的成員方法只能被它的子類重寫。
  • 聲明爲final的方法不能被重寫。
  • 聲明爲static的方法不能被重寫,可是可以被再次聲明。
  • 子類和父類在同一個包中,那麼子類能夠重寫父類全部方法,除了聲明爲private和final的方法。
  • 子類和父類不在同一個包中,那麼子類只可以重寫父類的聲明爲public和protected的非final方法。
  • 重寫的方法可以拋出任何非強制異常,不管被重寫的方法是否拋出異常。可是,重寫的方法不能拋出新的強制性異常,或者比被重寫方法聲明的更普遍的強制性異常,反之則能夠。
  • 構造方法不能被重寫。
  • 若是不能繼承一個方法,則不能重寫這個方法。(私有方法)

接口

  • 接口並非類,編寫接口的方式和類很類似,可是它們屬於不一樣的概念。類描述對象的屬性和方法。接口則包含類要實現的方法。
  • 除了明確指定,全部的接口方法都是抽象的。接口沒法被實例化,可是能夠被實現。一個實現接口的類,必須實現接口內所描述
  • 的全部方法,不然就必須聲明爲抽象類。
  • 接口中的字段必須初始化,而且隱式地是公有的、靜態的和final的。
  • 接口中的抽象方法沒有主體。全部抽象方法都隱式的爲公開的抽象的。

多態

同一個事件發生在不一樣的對象上會產生不一樣的結果。
多態的實現方式

  1. 重寫
  2. 接口
  3. 抽象類和抽象方法

教材學習中的問題和解決過程

  • 問題1:方法重載與方法重寫的對比
  • 方法的重寫(Overriding)和重載(Overloading)是java多態性的不一樣表現,重寫是父類與子類之間多態性的一種表現,重載能夠理解成多態的具體表現形式。
    (1)方法重載是一個類中定義了多個方法名相同,而他們的參數的數量不一樣或數量相同而類型和次序不一樣,則稱爲方法的重載(Overloading)。
    (2)方法重寫是在子類存在方法與父類的方法的名字相同,並且參數的個數與類型同樣,返回值也同樣的方法,就稱爲重寫(Overriding)。
    (3)方法重載是一個類的多態性表現,而方法重寫是子類與父類的一種多態性表現。

代碼調試中的問題和解決過程

  • 問題1:在書寫方法時,在main中調用非靜態字段
  • 問題1解決方案:將字段改成靜態或者建立實例訪問b。

[代碼託管]

上週考試錯題總結

1
編譯錯誤:
public static void main(String[] args)類型的常見錯誤爲:

  • 丟失static;

  • String必須大寫;

  • public static void main()是錯誤的。

2
若是C:\workspace\Hello\src中有Main.java以下:

package cc.openhome;  public class Main { 

    public static void main(String[]args) {   

        System.out.println("Hello World");  

    } 

}

文本模式下你的工做路徑是C:\workspace\Hello,那麼如何編譯與執行Main類別?
A .javac src\Main.java java C:\workspace\Hello\classes\Main
B .javac –d classes src\Main.java java –cp classes Main
C .javac –d classes src\Main.java java –cp classes cc.openhome.Main
D .javac –d classes src\Main.java java –cp classes/cc/openhome Main

javac的詳細用法

學習進度條

代碼行數(新增/累積) 博客量(新增/累積) 學習時間(新增/累積) 重要成長
目標 5000行 30篇 400小時
第一週 150/200 2/2 20/20
第二週 200/400 1/3 20/40
  • 計劃學習時間:15小時

  • 實際學習時間:20小時

參考資料

相關文章
相關標籤/搜索