2019年3月3日 2018-2019-2 20189205《移動平臺應用開發實踐》第二週做業

JAVA學習

類與對象

Java做爲面向對象編程語言,其思想是將現實中的對象抽象成一個個類的實例進行建模與編程 。包括了類、對象、方法和變量字段等概念。java

  • :類是一個模板,它描述一類對象的狀態和行爲。例如現實中的鳥,其能夠有顏色、重量、年齡等狀態,還有進食、飛、睡眠等行爲。
  • 對象:對象是類的一個實例,有狀態和行爲。例如現實中一隻具體地鳥。
  • 變量字段:字段就是對象的狀態,一個類能夠多個字段,其能夠是基本類型或是對象的引用。
  • 方法:方法就是對象的行爲,一樣一個類能夠有不少方法。邏輯運算、數據修改以及全部動做都是在方法中完成的。

類能夠是建立Java對象的模板,例如:編程

public class Bird{
  int weight;
  int age;
  String color;
  void fly(){
  }
 
  void eat(){
  }
 
  void sleep(){
  }
}

Bird這個類中,它就具備weight、age、color三個變量字段,以及fly、eat、sleep三個方法。編程語言

同時,每一個類都有構造方法。若是沒有顯式地爲類定義構造方法,Java編譯器將會爲該類提供一個默認構造方法。在建立一個對象的時候,至少要調用一個構造方法。構造方法的名稱必須與類同名,一個類能夠有多個構造方法。例如:ide

public class Bird{
    public int weight;
    public int age;
    public String color;
    public Bird (int weightValue, int ageValue, String colorValue){
        weight = weightValue;
        age = ageValue;
        color = colorValue;
    }
}

對象

對象是根據類建立的。在Java中,使用關鍵字new來建立一個新的對象。建立對象須要如下三步:函數

  • 聲明:聲明一個對象,包括對象名稱和對象類型。
  • 實例化:使用關鍵字new來建立一個對象。
  • 初始化:使用new建立對象時,會調用構造方法初始化對象。
    例如上文中描述的Bird類就能夠經過Bird myBird = new Bird(11 , 7 , "red");建立一個對象myBird。

變量

在Java語言中,全部的變量在使用前必須聲明。聲明變量的基本格式以下:學習

type identifier [ = value][, identifier [= value] ...] ;
格式說明:type爲Java數據類型。identifier是變量名。可使用逗號隔開來聲明多個同類型變量。

Java語言中變量的類型有:this

  • 類變量(靜態變量):獨立於方法以外的變量,用 static 修飾。
  • 實例變量:獨立於方法以外的變量,不過沒有 static 修飾。
  • 局部變量:類的方法中的變量。

類變量(靜態變量):3d

  • 類變量也稱爲靜態變量,在類中以static關鍵字聲明,但必須在方法構造方法和語句塊以外。
  • 不管一個類建立了多少個對象,類只擁有類變量的一份拷貝。
  • 靜態變量除了被聲明爲常量外不多使用。常量是指聲明爲public/private,final和static類型的變量。常量初始化後不可改變。
  • 靜態變量儲存在靜態存儲區。常常被聲明爲常量,不多單獨使用static聲明變量。
  • 靜態變量在第一次被訪問時建立,在程序結束時銷燬。
  • 與實例變量具備類似的可見性。但爲了對類的使用者可見,大多數靜態變量聲明爲public類型。
  • 默認值和實例變量類似。數值型變量默認值是0,布爾型默認值是false,引用類型默認值是null。變量的值能夠在聲明的時候指定,也能夠在構造方法中指定。此外,靜態變量還能夠在靜態語句塊中初始化。
  • 靜態變量能夠經過:ClassName.VariableName的方式訪問。
  • 類變量被聲明爲public static final類型時,類變量名稱通常建議使用大寫字母。若是靜態變量不是public和final類型,其命名方式與實例變量以及局部變量的命名方式一致。

實例變量:code

  • 實例變量聲明在一個類中,但在方法、構造方法和語句塊以外;
  • 當一個對象被實例化以後,每一個實例變量的值就跟着肯定;
  • 實例變量在對象建立的時候建立,在對象被銷燬的時候銷燬;
  • 實例變量的值應該至少被一個方法、構造方法或者語句塊引用,使得外部可以經過這些方式獲取實例變量信息;
  • 實例變量能夠聲明在使用前或者使用後;
  • 訪問修飾符能夠修飾實例變量;
  • 實例變量對於類中的方法、構造方法或者語句塊是可見的。通常狀況下應該把實例變量設爲私有。經過使用訪問修飾符可使實例變量對子類可見;
  • 實例變量具備默認值。數值型變量的默認值是0,布爾型變量的默認值是false,引用類型變量的默認值是null。變量的值能夠在聲明時指定,也能夠在構造方法中指定;
  • 實例變量能夠直接經過變量名訪問。但在靜態方法以及其餘類中,就應該使用徹底限定名:ObejectReference.VariableName。

局部變量:對象

  • 局部變量聲明在方法、構造方法或者語句塊中;
  • 局部變量在方法、構造方法、或者語句塊被執行的時候建立,當它們執行完成後,變量將會被銷燬;
  • 訪問修飾符不能用於局部變量;
  • 局部變量只在聲明它的方法、構造方法或者語句塊中可見;
  • 局部變量是在棧上分配的。
  • 局部變量沒有默認值,因此局部變量被聲明後,必須通過初始化,纔可使用。

方法

Java方法是語句的集合,相似於C語言中的函數,它們在一塊兒執行一個功能。

  • 方法是解決一類問題的步驟的有序組合
  • 方法包含於類或對象中
  • 方法在程序中被建立,在其餘地方被引用

方法包含一個方法頭和一個方法體,通常狀況下,定義一個方法包含如下語法:

修飾符 返回值類型 方法名(參數類型 參數名){
    ...
    方法體
    ...
    return 返回值;
}

格式說明:

  • 修飾符:修飾符,這是可選的,告訴編譯器如何調用該方法。定義了該方法的訪問類型。
  • 返回值類型 :方法可能會返回值。returnValueType 是方法返回值的數據類型。有些方法執行所需的操做,但沒有返回值。在這種狀況下,returnValueType 是關鍵字void。
  • 方法名:是方法的實際名稱。方法名和參數表共同構成方法簽名。
  • 參數類型:參數像是一個佔位符。當方法被調用時,傳遞值給參數。這個值被稱爲實參或變量。參數列表是指方法的參數類型、順序和參數的個數。參數是可選的,方法能夠不包含任何參數。
  • 方法體:方法體包含具體的語句,定義該方法的功能。

爲了更好地組織類,Java 提供了包機制,用於區別類名的命名空間。

包的做用:

  • 把功能類似或相關的類或接口組織在同一個包中,方便類的查找和使用。
  • 如同文件夾同樣,包也採用了樹形目錄的存儲方式。同一個包中的類名字是不一樣的,不一樣的包中的類的名字是能夠相同的,當同時調用兩個不一樣包中相同類名的類時,應該加上包名加以區別。所以,包能夠避免名字衝突。
  • 包也限定了訪問權限,擁有包訪問權限的類才能訪問某個包中的類。

import 關鍵字:
爲了可以使用某一個包的成員,咱們須要在 Java 程序中明確導入該包。使用 "import" 語句可完成此功能。
在 java 源文件中 import 語句應位於 package 語句以後,全部類的定義以前,能夠沒有,也能夠有多條,其語法格式爲:

import package1[.package2…].(classname|*);

若是在一個包中,一個類想要使用本包中的另外一個類,那麼該包名能夠省略。

繼承

繼承就是子類繼承父類的特徵和行爲,使得子類對象(實例)具備父類的實例域和方法,或子類從父類繼承方法,使得子類具備父類相同的行爲。
例如在現實中,鳥、魚、獸都是動物,而鸚鵡、麻雀有同屬於鳥,那麼就能夠將動物類做爲鳥類、魚類、獸類的父類,鳥類、魚類、獸類做爲動物類的子類;同時,鳥類又是鸚鵡類、麻雀類的父類,鸚鵡類、麻雀類是其的子類。

在 Java 中經過 extends 關鍵字能夠申明一個類是從另一個類繼承而來的,通常形式以下:

類的繼承格式
class 父類 {
}
 
class 子類 extends 父類 {
}

繼承的特性

  • 子類擁有父類非 private 的屬性、方法。
  • 子類能夠擁有本身的屬性和方法,即子類能夠對父類進行擴展。
  • 子類能夠用本身的方式實現父類的方法。
  • Java 的繼承是單繼承,可是能夠多重繼承,單繼承就是一個子類只能繼承一個父類,多重繼承就是,例如 A 類繼承 B 類,B 類繼承 C 類,因此按照關係就是 C 類是 B 類的父類,B 類是 A 類的父類,這是 Java 繼承區別於 C++ 繼承的一個特性。
  • 提升了類之間的耦合性(繼承的缺點,耦合度高就會形成代碼之間的聯繫越緊密,代碼獨立性越差)。

繼承的關鍵字

extends關鍵字:
在 Java 中,類的繼承是單一繼承,也就是說,一個子類只能擁有一個父類,因此 extends 只能繼承一個類。例如:

public class Animal { 
    public int weight;   
    public int old; 
    public String color;

    public void eat() {  
    } 
    public void sleep() {
    } 
} 
 
public class Bird  extends  Animal{ 
    public void fly(){
    }
}

public class Fish extends Animal{
    public void swim(){
    }
}

implements關鍵字:
使用 implements 關鍵字能夠變相的使java具備多繼承的特性,使用範圍爲類繼承接口的狀況,能夠同時繼承多個接口(接口跟接口之間採用逗號分隔)。

public interface A {
    public void eat();
    public void sleep();
}
 
public interface B {
    public void show();
}
 
public class C implements A,B {
}

super 與 this 關鍵字:
super關鍵字:咱們能夠經過super關鍵字來實現對父類成員的訪問,用來引用當前對象的父類。
this關鍵字:指向本身的引用。

class Animal {
  void eat() {
  }
}
 
class Bird extends Animal {
  void eat() {
  }
  void eatTest() {
    this.eat();   // this 調用本身的方法
    super.eat();  // super 調用父類方法
  }
}
相關文章
相關標籤/搜索