免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項超值服

開通VIP
什么是object指向?
 
按照上次的約定,本講我們將要學(xué)習(xí)有關(guān)object指向的知識了。
 
光名字都聽不懂啊。
 
可能聽起來比較難懂,但學(xué)起來卻是很簡單的。
.
1.     類與實例
 
首先讓我們從類與實例學(xué)起吧。
 
類好像在哪里聽說過。
 
小尼克糊涂了吧。到目前為止咱們學(xué)的程序的開頭都有“類”不是嗎?
 
??!是 嗎~
 
恩。我們一直在使用類,本講就要對類進(jìn)行一下說明了。
1.1.       類
 
首先要說明一下所謂的類就是程序里類似設(shè)計圖的東西。以設(shè)計圖為基準(zhǔn)來生成實例。
 
 
用簡單易懂的車的例子來說明一下。車有設(shè)計圖曉得吧。
 
恩。根據(jù)設(shè)計圖把車制造出來。
 
不錯。也就是說,類相當(dāng)于設(shè)計圖,而實例相當(dāng)于制作完成的車。
 
從類(設(shè)計書)生成
實例(車)。
 
博士,在類里面具體都寫些什么呀?
 
類里面定義了要制作實例的結(jié)構(gòu)和動作。我們以車為例來學(xué)習(xí)object指向。下面先看車的類。
 
類 Car{
int number;//制造編號
String name;//名稱
String maker;//廠家
String color;//顏色
}
 
車類里有制造編號、名稱、廠家以及車顏色一系列的實例變量。
 
是的。上面的程序只是定義了車固有的數(shù)據(jù),對其進(jìn)行改良后就成為下面定義車的操作的方法。
類 Car{
int number;//制造編號
String name;//名稱
String maker;//廠家
String color;//顏色
/**
* 行走
**/
void run(){
//行走處理
}
/**
* 轉(zhuǎn)換方向
**/
void turn(int angle){
//轉(zhuǎn)向處理
}
}
 
增加了run()和turn()方法。
 
恩。就是在車類里面多了“行走”和“轉(zhuǎn)換方向”的操作。
1.2.       實例化
 
根據(jù)類這個設(shè)計圖制作實例被稱為實例化。下面就讓我們來看一下使用車類來制作車實例的例子。實例化利用下面的編碼進(jìn)行。
類名 實例名=new 類名;
 
以前學(xué)的模板的source code也用上了。
 
不錯。對車類進(jìn)行實例化按下面這樣書寫就可以了。
Car car = new Car();
 
這個車類的實例變量和方法怎么用呢?
 
要使用“.”。
實例名.變量名
實例名.方法名
 
下面的程序是訪問實例的方法的sample。車的行走處理和車的轉(zhuǎn)向處理就是在message panel里顯示字符串的東西。
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;
/**
* 車sample programme
*/
public 類 CarApp extends MIDlet {
/**
* 開始處理
*/
protected void startApp() throws MIDletStateChangeException {
//實例化
Car car = new Car();
//設(shè)定實例變量
car.number = 6684;
car.name = "";
car.maker = "NEC";
car.color = "blue";
//調(diào)用方法
car.run();
car.turn();
}
protected void pauseApp() {}
protected void destroyApp(boolean arg0) throws MIDletStateChangeException {}
}
類 Car{
int number;//制造編號
String name;//名稱
String maker;//廠家
String color;//顏色
/**
* 行走
**/
void run(){
//行走處理
System.out.println(name + " is running!");
}
/**
* 轉(zhuǎn)換方向
**/
void turn(){
//轉(zhuǎn)向處理
System.out.println(name + " is turning.");
}
}
 
運(yùn)行程序,如下所示。
 
2.     封裝
2.1.       public interface
 
這么說來,模板程序里面的“public”和“private”是帶有類、實例變量和方法的定義部分?這是什么意思呢?
 
哦,問的好啊。使用“public”和“private”是為了進(jìn)行封裝。
 
封裝…?
 
就舉車類的例子來看,要生成實例就要設(shè)定制造編號、名稱、廠家和車顏色。這樣生成的實例也是可以更改實例變量的。
 
是這樣的。
 
但是,制造編號、名稱以及廠家在車子被制造出來那一刻就是確定的,之后是不能變更的或者說不容易變更的。
 
制造編號是用來進(jìn)行車的管理的,如果途中隨便更改會增添麻煩。但是,只要制造者自己確定不變更的話就沒關(guān)系吧。
 
恩。也許吧。但是,如果programme規(guī)模大的話,就有可能涉及多人開發(fā)。這時若有人錯誤的隨便更改制造編碼,就會給別人造成大的麻煩。這樣的事情也是有的。
 
我沒有考慮到許多人一起做的情況。這么說“public”和“private”可以防止這樣的事情發(fā)生是嗎?
 
沒錯。使用“private”就禁止了從類外面訪問實例變量或方法。與之相反,若使用“public”則可以從類外面訪問實例變量和方法。使用“public”可以從類外面訪問的實例變量和方法被稱為public interface。車類的實例變量中只有顏色是后來可以變更的。
 
車可以被制造出來之后再涂顏色是吧。
2.2.       構(gòu)造器
 
生成實例時,要使用進(jìn)行初始化的構(gòu)造器方法。
 
??!以前用過啊。就是和類名相同名稱的方法吧。
 
對呀對呀。如下所示進(jìn)行定義。當(dāng)然作為public interface,為了能從外面訪問要加上“public”。
/**
* 構(gòu)造器
*/
public 類名(){
//初始化處理
}
 
車類的構(gòu)造器如下方式書寫。
/**
* 構(gòu)造器
*/
public Car(int number,String name,String maker,String color){
this.number = number;
this.name = name;
this.maker = maker;
this.color = color;
}
2.3.       accessory method
 
但是,對實例變量使用“private”,那不就是不能看到實例變量了?如果想要使用變量值時怎么辦呢?
 
是啊。進(jìn)行private定義后,就不能看到值了。
 
正因為有這樣的不方便,所以就出現(xiàn)了解決方法,能看到值的accessory method。也就是可以訪問private變量的方法。車類的accessory method如下所示。
/*******************************************
* accessory method
*******************************************/
/**
* 取得顏色
*/
public String getColor() {
return color;
}
/**
* 取得廠家
*/
public String getMaker() {
return maker;
}
/**
* 取得名稱
*/
public String getName() {
return name;
}
/**
* 取得制造編號
*/
public int getNumber() {
return number;
}
/**
* 設(shè)定顏色
*/
public void setColor(String string) {
color = string;
}
 
真不錯!使用public interface就可以看到“private”的實例變量了。
 
不錯。下面的程序是封裝的類以及使用它的sample程序。
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;
/**
* 車sample pragramme
*/
public 類 CarApp extends MIDlet {
/**
* 開始處理
*/
protected void startApp() throws MIDletStateChangeException {
//實例化
Car car = new Car(6684,"java","NEC","blue");
//調(diào)用方法
car.run();
car.turn();
//涂顏色
System.out.println(car.getName() + "‘s color is " + car.getColor());
car.setColor("Red");//涂顏色
System.out.println(car.getName() + "‘s color is " + car.getColor());
}
protected void pauseApp() {}
protected void destroyApp(boolean arg0) throws MIDletStateChangeException {}
}
類 Car{
private int number;//制造編號
private String name;//名稱
private String maker;//廠家
private String color;//顏色
/**
* 構(gòu)造器
*/
public Car(int number,String name,String maker,String color){
this.number = number;
this.name = name;
this.maker = maker;
this.color = color;
}
/**
* 行走
**/
public void run(){
//行走處理
System.out.println(name + " is running!");
}
/**
* 轉(zhuǎn)換方向
**/
public void turn(){
//轉(zhuǎn)向處理
System.out.println(name + " is turning.");
}
/*******************************************
* accessory method
*******************************************/
/**
* 取得顏色
*/
public String getColor() {
return color;
}
/**
* 取得廠家
*/
public String getMaker() {
return maker;
}
/**
* 取得名稱
*/
public String getName() {
return name;
}
/**
* 取得制造編號
*/
public int getNumber() {
return number;
}
/**
* 設(shè)定顏色
*/
public void setColor(String string) {
color = string;
}
}
 
程序運(yùn)行后結(jié)果如下。
 
3.     繼承
 
下面我們就對object指向編程中重要的繼承進(jìn)行說明。所謂的繼承,就是以某個類為基礎(chǔ)定義新的類。
 
什么意思啊…
 
確實繼承是object指向中比較難的概念之一。但是學(xué)會了就很簡單了。還以車為例進(jìn)行說明吧。
 
剛才的車類嗎。
 
恩。這次我們來用卡車作為新例子吧??ㄜ囈灿?#8220;制造編號”“名稱”“廠家”這些變量。
 
與車一樣啊。
 
除此之外為了對卡車運(yùn)輸?shù)奈锲愤M(jìn)行管理,又加入了“負(fù)荷”這個變量。
 
 
 
程序?qū)懗鰜硎沁@樣的。
 
類 Trailer{
private int number;//制造編號
private String color;//顏色
private String maker;//廠家
private String name;//名稱
private String cargo;//負(fù)荷
/**
* 構(gòu)造器
*/
public Trailer(int number,String name,String maker,String color,String cargo){
this.number = number;
this.name = name;
this.maker = maker;
this.color = color;
this.cargo = cargo;
}
/**
* 行走
**/
public void run(){
//行走處理
System.out.println(name + " is running!");
}
/**
* 轉(zhuǎn)換方向
**/
public void turn(){
//轉(zhuǎn)向處理
System.out.println(name + " is turning.");
}
/*******************************************
* accessory method
*******************************************/
/**
* 取得顏色
*/
public String getColor() {
return color;
}
/**
* 取得廠家
*/
public String getMaker() {
return maker;
}
/**
* 取得名稱
*/
public String getName() {
return name;
}
/**
* 取得制造編號
*/
public int getNumber() {
return number;
}
/**
* 設(shè)定顏色
*/
public void setColor(String string) {
color = string;
}
/**
* 取得負(fù)荷
*/
public String getCargo(){
return cargo;
}
/**
* 設(shè)定負(fù)荷
*/
public void setCargo(String cargo){
this.cargo = cargo;
}
}
 
卡車類和車類感覺一樣啊,是因為卡車是車的一種嗎?
 
觀察的不錯啊。當(dāng)然,卡車是車的一種。換一種說法,也就是把卡車進(jìn)行抽象化就是車。
 
抽選象化是指把類抽象化嗎?
 
差不多的意思吧。這個程序里面,車類和卡車類只是source code,并沒有表示“卡車抽象化之后就是車”這個概念。
 
恩,確實只看source code的話,并看不出來車與卡車的關(guān)系。
 
這就用到了“繼承”。以車類為基礎(chǔ)制作卡車類,就表示“卡車類的抽象概念即為車類”。繼承車類的卡車類的source code如下所示。繼承,需要使用構(gòu)造器調(diào)用繼承之類的構(gòu)造器 method。也就是下面第九行的super()。
類 Trailer extends Car{
private String cargo;//負(fù)荷
/**
* 構(gòu)造器
*/
public Trailer(int number,String name,String maker,String color,String cargo){
super(number,name,maker,color);//調(diào)用繼承之類的構(gòu)造器.
this.cargo = cargo;
}
/*******************************************
* accessory method
*******************************************/
/**
* 取得負(fù)荷
*/
public String getCargo(){
return cargo;
}
/**
* 積荷を設(shè)定する設(shè)定負(fù)荷
*/
public void setCargo(String cargo){
this.cargo = cargo;
}
}
 
呃?博士,卡車類里面只有負(fù)荷的實例變量嗎?其他的實例變量和方法是不是忘了?
 
呵,呵,呵。事實上,繼承類后,繼承的類的實例變量和方法就不需要再定義就可以使用了。
 
呃?也就是說雖然上面的程序里面沒有寫,但是卡車類里也具有車類里面的制造編號和名稱等變量?
 
不錯,就是這樣,很方便吧。下面就是使用了繼承車類的卡車類的sample programme。
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;
/**
* 車sample programme
*/
public 類 CarApp extends MIDlet {
/**
* 開始處理
*/
protected void startApp() throws MIDletStateChangeException {
//實例化
Trailer trailer = new Trailer(6684,"java-Trailer","NEC","blue","N820");
//調(diào)用方法
trailer.run();
trailer.turn();
//改變負(fù)荷
trailer.setCargo("N800");
System.out.println(trailer.getName() + "‘s cargo is " + trailer.getCargo());
}
protected void pauseApp() {}
protected void destroyApp(boolean arg0) throws MIDletStateChangeException {}
}
類 Trailer extends Car{
private String cargo;//負(fù)荷
/**
* 構(gòu)造器
*/
public Trailer(int number,String name,String maker,String color,String cargo){
super(number,name,maker,color);
this.cargo = cargo;
}
/*******************************************
* accessory method
*******************************************/
/**
* 取得負(fù)荷
*/
public String getCargo(){
return cargo;
}
/**
* 設(shè)定負(fù)荷
*/
public void setCargo(String cargo){
this.cargo = cargo;
}
}
類 Car{
private int number;//制造編號
private String name;//名稱
private String maker;//廠家
private String color;//顏色
/**
* 構(gòu)造者
*/
public Car(int number,String name,String maker,String color){
this.number = number;
this.name = name;
this.maker = maker;
this.color = color;
}
/**
* 行走
**/
public void run(){
//行走處理
System.out.println(name + " is running!");
}
/**
* 轉(zhuǎn)換方向
**/
public void turn(){
//轉(zhuǎn)向處理
System.out.println(name + " is turning.");
}
/*******************************************
* accessory method
*******************************************/
/**
* 取得顏色
*/
public String getColor() {
return color;
}
/**
* 取得廠家
*/
public String getMaker() {
return maker;
}
/**
* 取得名稱
*/
public String getName() {
return name;
}
/**
* 取得制造編號
*/
public int getNumber() {
return number;
}
/**
* 設(shè)定顏色
*/
public void setColor(String string) {
color = string;
}
}
 
這樣,誰看到source code都不會把程序弄錯了。これだと、誰がソースコードを見ても間違えずにプログラムできそうですね。
 
呵呵。明白Object指向多重要了吧。
上面程序運(yùn)行后的結(jié)果如下。
 
4.     下一講
 
本講講座幾乎沒有涉及Java技術(shù)。覺得怎么樣?
 
恩,對object了解一些了。但繼承有點難。
 
本講講的東西是object指向最基礎(chǔ)的東西。事實上,我們今后還要進(jìn)行更深入的學(xué)習(xí)。
 
明白了,下一講我們學(xué)什么呢?
 
下一講我們講動畫。學(xué)習(xí)怎樣使圖像在畫面上移動。
 
這可是制作游戲必須的呀。好期待…
 
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Java 修飾符
Java泛型詳解:<T>和Class<T>的使用。泛型類,泛型方法的詳細(xì)使用實例
最全的Java筆試題庫之選擇題篇-總共234道【1~60】
利用java反射調(diào)用類的的私有方法
Spring系列(十三):AOP相關(guān)知識筆記
java jason包的選擇, jason-lib 錯誤 "has no getter m...
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服