[CSP-S 2021] 廊橋分配 題解
面向物件概述
什麼是物件?
一切客觀存在的事物都是物件
我們所在的客觀世界就是由物件組成:
小物件構成大物件
物件之間互相呼叫方法
物件和類
什麼是物件?
計算機中的物件,就是一塊連續的記憶體空間。
每建立一個物件,都要在記憶體中分配一塊空間。
記憶體中儲存的資料是生活中的物件的抽象。
有用的屬性保留,沒用的屬性不要。
物件的要求:
各司其職:物件應該是簡單的
弱耦合性:物件之間的關係應該儘量的弱
可重用性:儘可能避免重複性的工作
可擴充套件性:已有物件可以換成新的物件
面向物件的關鍵,軟體開發的原則
什麼是類?
類是物件的抽象。
屬於同一個類的所有的物件都具備相同的屬性。
類是客觀物件在人腦中的主觀反應,是人對物件的認識。
類是物件的模板。 程式設計師編寫的類是用來建立物件的。
如何編寫一個類?
class First{ public static void main(String[]args){ System.out.println("Hello Java"); } }
定義屬性就是定義變數:
在方法(函式)中定義的變數叫做區域性變數。
在方法(函式)外定義的變數叫做例項變數,也就是屬性。
例項變數的特點
: 有預設值,也可以賦初始值 作用範圍至少在類的內部
可以和區域性變數的命名發生衝突 如果沒有命名衝突,所有方法可以直接訪問
如果發生命名衝突,方法中優先訪問區域性變數
定義方法就是定義函式:
方法的宣告: 表示這個類的物件能做什麼
暫時不需要修飾符 需要修飾符時順序隨意
修飾符組合 返回值型別
方法名 (引數表) 丟擲的異常
過載
在呼叫一個物件的方法時,編譯器會根據實參的個數、型別和順序,決定呼叫物件的哪個方法。
編譯時決定呼叫的方法
編譯結束,呼叫的方法就被確定
也叫編譯時多型
每天都在用的過載:
System.out.println( 10 ); System.out.println( 10.0 ); System.out.println( 'A' ); System.out.println( true ); System.out.println("10" ); System.out.println( );
過載:型別不同,個數不同,順序不同;
構造方法.
什麼是構造方法?
構造方法是類中一種特殊的方法,也叫構造器:
沒有返回值型別 方法名必須和類名完全相同,可以過載
不允許手動呼叫
class Student { Student ( ) { } Student ( String a, int b ) { name = a; age = b; } }
一個類可以沒有方法,但是不能沒有構造方法。
如果定義類時沒有寫構造方法,編譯器會自動增加公開的無參構造方法,以保證一個類無論如何至少有一個構造方法。
建議:主動提供構造方法。
構造方法在物件被建立時會被呼叫一次,呼叫之後物件就建立完成了。
物件的建立過程(v1.0):
分配空間 給所有的屬性賦初始值
呼叫構造方法
構造方法經常用來給屬性賦值,比較靈活