在創(chuàng)建類的時候缎患,類名需要單詞首字母大寫,方法名需要首字母小寫肮街,其他單詞首字母大寫,若方法名只有一個單詞時判导,首字母大寫。
在UML圖中绕辖,-是私有的仪际,+是公共的昵骤,#是protected。
一:面向?qū)ο筇卣髦唬悍庋b與隱藏
問題:當(dāng)創(chuàng)建了類的對象了以后成榜,如果直接通過“對象.屬性”的方式對相應(yīng)的對象屬性進(jìn)行賦值的話伴栓,可能會出現(xiàn)不滿足實際情況的意外(例如動物的legs只能是偶數(shù)個,不能奇數(shù))钳垮,所以我們考慮不讓對象來直接作用屬性(int legs; ?a.legs= 3),而是通過“對象.方法”的形式歧焦,來控制對象對屬性的訪問(重新定義一個方法肚医,其中對legs進(jìn)行限制)。實際情況中舰涌,對屬性的要求就可以通過方法來實現(xiàn)你稚。
但是當(dāng)兩種調(diào)用方式都可行的時候朱躺,就需要對“對象.屬性”的方式進(jìn)行限制搁痛,這里進(jìn)行private進(jìn)行限制鸡典,只能在該類被訪問。
解決的方法:(封裝性的思想)1.將類的屬性私有化谁尸,2.提供公共的 方法(setter & getter)來實現(xiàn)調(diào)用疗垛。
二:權(quán)限修飾符:public ?private ? 缺省 ?protected
注:權(quán)限從大到小的排列:public ?protected ?缺省 private
? ? ? 修飾類的權(quán)限:public ?缺省(在調(diào)用的時候,是用三角形表示缺省咬展,用圓圈表示public)?
1.對于屬性、方法和構(gòu)造器的訪問:
2.對于class的權(quán)限修飾只可以用public和default(缺省):
public類可以在任意地方被訪問涮总。
default類只可以被同一個包內(nèi)部的類訪問瀑梗。
public類除了可以被本包內(nèi)被訪問調(diào)用外,若該類需要在該包以外被繼承時抛丽,則需要導(dǎo)入其所在的包亿鲜,才能夠被進(jìn)行調(diào)用冤吨。
一個小例子:
public class TestPerson { ? ? ? ?
? ? public static void main(String[] args) {
? ? ? ? Person p = new Person();
? ? ? ? p.setAge(150);
? ? ? ? System.out.println(p.getAge());
? ? ?}
}
? ? class Person{
? ? ? ? private int age;
? ? ? ? public void setAge(int i){
? ? ? ? ? ? if(i>=0 && i <=130){
? ? ? ? ? ? ? ? ?age = i;
? ? ? ? ? ? }else {
? ? ? ? ? ? ? ? ? System.out.println("輸入的年齡有誤");
? ? ? ? ? ? ? ? ? //throw new RuntimeException("shuru de shuju youwu");
? ? ? ? ? ? ?}
? ? ? ? ? }
? ? ? ? ? public int getAge(){
? ? ? ? ? ? ? return age;
? ? ? ? ?}
}
這種情況下漩蟆,當(dāng)輸入不在0-130范圍內(nèi)時,會輸出什么怠李?
答:這種情況下會輸出:輸入的年齡有誤
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?0
若拋出那句異常,則不會再有0輸出褐奥。
類的第三個成員:構(gòu)造器(constructor 構(gòu)造方法)
constructor:建造者
構(gòu)造器的作用:1,創(chuàng)建對象 2儿倒,給創(chuàng)建的對象的屬性賦值呜笑,通過構(gòu)造器的形參傳遞
1,設(shè)計類時凰慈,若不顯示聲明類的構(gòu)造器的話微谓,程序會默認(rèn)提供一個空參的構(gòu)造器输钩。
public Person(){
}
2,一旦顯示的定義了類的構(gòu)造器买乃,那么默認(rèn)的構(gòu)造器就不再提供了剪验。若需要無參數(shù)的構(gòu)造器時,則需要重新寫一個空的夠早方法娶眷。
Person p = new?Person()疫铜;平時用的都是不帶參數(shù)的構(gòu)造方法,系統(tǒng)自動提供席揽,
Person p = new Person("5")谓厘;這個是帶參數(shù)的構(gòu)造方法,
public Person(int a){ ? ?
]
3竟稳,如果聲明類的構(gòu)造器熊痴。格式:權(quán)限修飾符 ?類名(形參){ ?} ------------無返回值
4果善,類的多個構(gòu)造器之間構(gòu)成重載
二系谐,類對象的屬性賦值的先后順序:類對象指的是new Person()
1,屬性的默認(rèn)初始化(指定義了不帶參數(shù)的構(gòu)造函數(shù)以后鄙煤,系統(tǒng)一旦創(chuàng)建該對象梯刚,便自動賦值指沒有默認(rèn)值的屬性);
public Person(){ ? ? ? ? ? ? ? ? ? ? ? private String name;(默認(rèn)初始化)
name = null; ? ? ? ? ? ? ? ? ? ? ? ? ? private int age = 1;(顯示初始化)
age = 34;
}//該構(gòu)造函數(shù)不帶參數(shù)
2亡资,屬性的顯示初始化(指新建類中屬性帶有賦值)
3沟于,通過構(gòu)造器給屬性初始化(帶參數(shù)的構(gòu)造器)
4,通過“對象.方法”給屬性賦值
所以最終決定該屬性值是多少時展懈,應(yīng)該從4到1往前看,因為后面的會將前面的值覆蓋冻记。所以構(gòu)造器的賦值優(yōu)于屬性默認(rèn)和顯示的賦值冗栗。