Class Back

  • 屬性有默認值且可直接初始化(C++需要用在構造函數初始化)
  • 一旦函數有構造函數Constructor, 默認的Constructor將失效
  • 可以通過調用super來調用父類

The order of Initialization

初始化順序
static 成員(main前初始化)
(继承部分初始化)
屬性初始化
構造函數初始化

Override & Overload

What Description
Override 對繼承的方法進行重寫
Overload 重載函數,接受不同的參數調用不同的方法

Polymorphism

  • 多態的理解: 指不同對象處理同一事件的方式並不同

eg.貓與狗同屬於動物類, 動物有叫的方法. 但是對於貓和狗來說, 叫的方式不同.

  • 多態的本質: Dynamic Binding(動態綁定)
  • Upcast: Base_Class p = new Derived_Class();
多態的實現 Code
Inheritance class Sub_Cass extends Super_Cass{}
Override public void method(){}
Upcast Super_Class p = new Sub_Class();
Call Child's Method p.method();

Inheritance

  • 抽象類與接口都不能實例化
  • 一個類只能繼承一個抽象類,原因菱形多重繼承存在二義性
  • 一個類可以實現多個接口(間接實現多重繼承)
  • 抽象類中可以有已經實現的方法, 但接口中不能實現方法
  • 接口中的所有成員均為public
  • 先extends, 後implements

Super Class:

class Super_Class
{
    protected void method()
    {
        //method of superclass
    }
}

class Sub_Class
{
    @Override
    //@Override起到斷言作用,檢測所重寫的方法是否拼寫正確,否則報錯。若無該句,編譯器會認為這是新方法
    public void method()
    {
        //method of subclass
    }
}

Abstract Class:

abstract class Abstract_Class
{
    public abstract void method();
}

class Derived_Class extends Abstract_Class
{
    //(override)...
    public void method(){//...} //子類重寫的函數訪問級別不能比父類低
}

Interface:

class Derived_Class implements Iinterface
{
    //(implements)...
}

Specifers: Static & Final

Static

  • static成員給所有該類中的成員提供訪問性,且可以保證唯一性(構造函數私有)
  • 可直接通過類名調用static成員

Final

修飾對象 作用
Variable 常量(若是一個Object reference, 則指向對象不能發生改變, 但所指對象的值是可以修改的)
Method 不能重寫
Class 封閉類(不能被繼承)

Access Specifers: Public, Private, Protected & Omitted

Member

修飾符 可訪問性
Public 所有包的類都可訪問該成員
Omitted(缺省) 該包內的類可訪問該成員
Protected 與該類有繼承關係的可跨包訪問該成員或該包內的類可訪問該成員
Private 成員訪問性只控制在類內

Class

修飾符 可訪問性
Public 所有包都可訪問該類(在一個Java源文件必須有且僅有一個)
Omitted(缺省) 只能在該包內訪問該類(可有多個或沒有)

How to get the type of an instance

Student me = new Student("PuiMan Cheui", "13121215");
System.out.println(me.getClass().getName());

results matching ""

    No results matching ""