欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

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

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久