生活随笔
收集整理的這篇文章主要介紹了
面向对象(上)之三
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
1 封裝性
1.1 封裝性的設(shè)計(jì)思想
- 隱藏對(duì)象內(nèi)部的復(fù)雜性,只對(duì)外公開簡(jiǎn)單的接口。便于外界調(diào)用,從而提高系統(tǒng)的可擴(kuò)展性、可維護(hù)性。
- 換言之,把該隱藏的隱藏起來(lái),該暴露的暴露出來(lái)。
1.2 封裝性的引入
- 使用者對(duì)類內(nèi)部定義的屬性直接操作會(huì)導(dǎo)致數(shù)據(jù)的錯(cuò)誤、混亂或安全性問(wèn)題。
?
package day08;public class Animal {public int legs;public void eat() {System.out.println("動(dòng)物吃飯"
);}public void move() {System.out.println("動(dòng)物移動(dòng)"
);}
} View Code package day08;public class AnimalTest {public static void main(String[] args) {Animal animal =
new Animal();animal.legs = 4
;animal.eat();animal.move();System.out.println("----------------------"
);animal =
new Animal();animal.legs = -5
;animal.eat();animal.move();}
} View Code 1.3 信息的封裝和隱藏
- java通過(guò)將數(shù)據(jù)聲明為私有的(private),再提供公共的(public)的方法實(shí)現(xiàn)對(duì)該屬性的操作,以實(shí)現(xiàn)下面的目的:
- ①隱藏一個(gè)類中不需要對(duì)外提供的實(shí)現(xiàn)細(xì)節(jié)。
- ②使用者只能通過(guò)事先定制好的方法來(lái)訪問(wèn)數(shù)據(jù),可以方便的加入控制邏輯,限制對(duì)屬性的不合理操作。
- ③便于修改,增強(qiáng)代碼的可維護(hù)性。
?
package day08;public class Animal {private int legs;public int getLegs() {return legs;}public void setLegs(
int legs) {if (0 != legs && 2 != legs && 4 !=
legs) {System.out.println("動(dòng)物的腿的數(shù)目不對(duì)"
);return;}this.legs =
legs;}public void eat() {System.out.println("動(dòng)物吃飯"
);}public void move() {System.out.println("動(dòng)物移動(dòng)"
);}
} View Code 1.3 四種訪問(wèn)權(quán)限修飾符
- java權(quán)限修飾符public、protected、缺省、private置于類的成員定義前,用來(lái)限定對(duì)象對(duì)該類成員的訪問(wèn)權(quán)限。
- 對(duì)于class的權(quán)限修飾只可以用public和缺省。
- ①public類可以在任何地方被訪問(wèn)。
- ②缺省類只可以被同一個(gè)包內(nèi)部的類訪問(wèn)。
?
package day08;public class Person {private Integer age;public Integer getAge() {return age;}public void setAge(Integer age) {if (age >= 0 && age <= 130
) {this.age =
age;}}
} View Code ?
2 構(gòu)造器(構(gòu)造方法)
2.1 構(gòu)造器的特征
- 它具有和類相同的名稱。
- 它不聲明返回值類型。
- 不能被static、final、synchronized、abstract、native修飾,不能有return語(yǔ)句返回值。
2.2 構(gòu)造器的作用
- 創(chuàng)建對(duì)象。
- 給對(duì)象進(jìn)行初始化。
2.3 構(gòu)造器的語(yǔ)法格式
訪問(wèn)修飾符 類名(參數(shù)列表){//初始化語(yǔ)句;
} 2.4 構(gòu)造器的分類
- 根據(jù)參數(shù)的不同,構(gòu)造器可以分為如下的兩類:
- ①隱式無(wú)參構(gòu)造器(系統(tǒng)默認(rèn)提供)。
- ②顯示定義一個(gè)或多個(gè)構(gòu)造器(無(wú)參、有參)。
2.5 構(gòu)造器的注意事項(xiàng)
- java語(yǔ)言中,每個(gè)類都至少有一個(gè)構(gòu)造器。
- 默認(rèn)構(gòu)造器的修飾符和所屬類的修飾符一致。
- 一旦顯示定義了構(gòu)造器,則系統(tǒng)不再提供默認(rèn)構(gòu)造器。
- 一個(gè)類可以創(chuàng)建多個(gè)重載的構(gòu)造器。
- 父類的構(gòu)造器不能被子類繼承。
2.6 構(gòu)造器的作用
- ①創(chuàng)建對(duì)象。
- ②給對(duì)象進(jìn)行初始化。
2.7 應(yīng)用的示例
package day08;public class Person {private String name;private Integer age;/*** 無(wú)參構(gòu)造器*/public Person() {}/*** 有參構(gòu)造器*/public Person(String name) {this.name =
name;}/*** 有參構(gòu)造器*/public Person(Integer age) {this.age =
age;}/*** 有參構(gòu)造器*/public Person(String name, Integer age) {this.name =
name;this.age =
age;}public String getName() {return name;}public void setName(String name) {this.name =
name;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age =
age;}
} View Code ?
3 JavaBean
3.1 JavaBean的概念
- JavaBean是一種java語(yǔ)言寫成的可重用的組件。
?
- 所謂的JavaBean,是指符合如下標(biāo)準(zhǔn)的java類:
- ①類的公共的。
- ②有一個(gè)無(wú)參數(shù)的公共的構(gòu)造方法。
- ③有屬性,并且有set和get方法。
?
- 用戶可以使用JavaBean將功能、處理、值、數(shù)據(jù)庫(kù)訪問(wèn)和其他任何可以用Java代碼創(chuàng)造的對(duì)象進(jìn)行打包,并且其他的開發(fā)者可以通過(guò)內(nèi)部的JSP頁(yè)面、Servlet、其他JavaBean、applet程序或者應(yīng)用來(lái)使用這些對(duì)象。用戶可以認(rèn)為JavaBean提供了一種隨時(shí)隨地可以復(fù)制和粘貼的功能,而不用關(guān)系任何改變。
3.3 JavaBean的應(yīng)用示例
package day08;public class Person {private String name;private Integer age;public String getName() {return name;}public void setName(String name) {this.name =
name;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age =
age;}
} View Code ?
4 this關(guān)鍵字
4.1 this關(guān)鍵字的概念
- 在java中,this關(guān)鍵字比較難理解,它的作用和其語(yǔ)義很接近。
- ①它在方法內(nèi)部使用,即這個(gè)方法所屬對(duì)應(yīng)的引用。
- ②它在構(gòu)造器內(nèi)部使用,表示該構(gòu)造器正在初始化的對(duì)象。
?
- this表示當(dāng)前對(duì)象,可以調(diào)用當(dāng)前類的屬性、方法和構(gòu)造器。
4.2 this關(guān)鍵字的應(yīng)用示例
package day08;public class Person {private String name;private Integer age;public String getName() {return name;}public void setName(String name) {this.name =
name;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age =
age;}@Overridepublic String toString() {return "Person{" +"name='" + name + '\'' +", age=" + age +'}'
;}
} View Code package day08;public class PersonTest {public static void main(String[] args) {Person person =
new Person();person.setName("許威威"
);person.setAge(27
);System.out.println(person);}
} View Code ?
5 package關(guān)鍵字
5.1 package關(guān)鍵字的概念
- package語(yǔ)句作為java源文件的第一條語(yǔ)句,指明該文件中定義的類所在的包。
- 其格式如下:
package com.xxx;
- 包對(duì)應(yīng)于文件系統(tǒng)的目錄,package語(yǔ)句中,用“.”來(lái)指明包(目錄)的層次。
- 包通常用小寫單詞標(biāo)識(shí)。通常使用所在公司域名的倒置。
5.2 package關(guān)鍵字的應(yīng)用示例
package day08;public class Person {private String name;private Integer age;public Person() {}public Person(String name) {this(name,
null);}public Person(Integer age) {this(
null, age);}public Person(String name, Integer age) {this.name =
name;this.age =
age;}public String getName() {return name;}public void setName(String name) {this.name =
name;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age =
age;}@Overridepublic String toString() {return "Person{" +"name='" + name + '\'' +", age=" + age +'}'
;}
} View Code ?
6 import關(guān)鍵字
6.1 import關(guān)鍵字的概念
- 為使用定義在不同包中的java類,需要import語(yǔ)句來(lái)引入指定包層次下所需要的類或全部類(.*)。
- import語(yǔ)句告訴編譯器到哪里去尋找類。
6.2 語(yǔ)法格式
import 包名.類名;
6.3 import關(guān)鍵字的應(yīng)用示例
package day07;public class Person {private String name;private Integer age;public Person() {}public Person(String name, Integer age) {this.name =
name;this.age =
age;}public String getName() {return name;}public void setName(String name) {this.name =
name;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age =
age;}@Overridepublic String toString() {return "Person{" +"name='" + name + '\'' +", age=" + age +'}'
;}
} View Code package day08;import day07.Person;public class PersonTest {public static void main(String[] args) {Person person =
new Person();person.setName("許威威"
);person.setAge(27
);System.out.println(person);}
} View Code 6.4 注意
- 在源文件中使用import顯示的導(dǎo)入指定包下的類或接口。
- 聲明在包的聲明和類的聲明之間。
- 如果需要導(dǎo)入多個(gè)類或接口,那么就需要并列顯示多個(gè)import語(yǔ)句。
- 如果導(dǎo)入的類或接口是java.lang包下的,或者是當(dāng)前包下的,則可以省略此import語(yǔ)句。
- 如果在代碼中使用不同包下的同名的類,那么就需要使用類的全類名的方式指明調(diào)用的是哪個(gè)類。
- 如果已經(jīng)導(dǎo)入java.util包下的類,如果需要導(dǎo)入util包的子包下的類,依然需要導(dǎo)入。
?
轉(zhuǎn)載于:https://www.cnblogs.com/xuweiweiwoaini/p/10828516.html
總結(jié)
以上是生活随笔為你收集整理的面向对象(上)之三的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。