JAVA第二階段總結 (12)

類的定義

[類修飾詞] class 類名{
  聲明成員變量;     //類的屬性
  成員方法(函數); //定義方法的內容
}

類名:應遵循標識符的命名規則,習慣類名的首字母大寫。
**實例化:**由類構造對象的過程稱爲創建類的實例。

類修飾詞:限定了訪問和處理類的方式。

public:被public修飾的類對所有類都是可見的,並且必須定義在以該類名爲名字的java文件中。

flnal:被final修飾的類不能被繼承,或者說不能作爲超類也不可能有子類。

abstract:被abstract修飾的類是抽象類。因爲抽象類至少有一個成員方法需要在其子類中給出完整定義,所以抽象類不能被實例化。

默認:如果沒有指定的類修飾詞,就表示使用默認類修飾詞。在這種情況下,其他類可以繼承此類,同時在同一個包下可以訪問引用此類。

定義Student類如下

pubilc class Student{//定義一個公開的類,類名Student
  String name;         //聲明姓名屬性
  int age;             //聲明年齡屬性 
  public void getStuInfo() {  //取得學生信息的方法
  System.out.println("姓名:"+ name +“年齡:”+ age);
} 
}

類之間的關係

  1. 依賴:一個類的方法操縱另一個類的對象
  2. 聚合:類A的對象包含類B的對象
  3. 繼承:

圖片

圖1-1 繼承關係

圖1-1中頂端是範圍較大的類,向下詳細分成幾個小類,這樣的分類關係稱爲繼承關係,上面的大類爲父類,下面的小類爲子類。

子類繼承了父類的所有特徵,同時子類在父類的基礎上還增加了自己的特徵。

繼承的語法格式如下:

[修飾符] class 子類名 extends 父類名

對象

構造器:

構造器是在Java中創建新對象時執行的操作。

對象的創建

使用new關鍵字

//方法一
類名 對象名稱 = null;  //聲明對象
對象名稱 = new 類名(); //實例化對象
//方法二
類名 對象名稱(引用變量) = new 類名();

訪問對象中屬性和方法格式如下

訪問屬性:對象名稱.屬性名。

訪問方法:對象名稱.方法名()。

下面的例子是爲上面定義的Student類創建對象。

pubilic class ClassDem01{
  public static void main(String[] args){
Student student = new Student();  //創建一個student對象
         student.name = "張三";
         student.age = 11;        //設置student對象屬性內容
  }
}

關鍵字

this

作用:

(1)表示類中屬性。

public calss Hero{
  String name; 
  int hp;
  float armor;
  int moveSpeed;
  
  public void setName(String name){
    name = name;
  }
  public static void main(String[] args){
     Hero h1 = new Hero();
     System.out.println(h.name);
     h.setName("蓋倫");
     
     System.out.println(h.name);
     }
}
//運行結果爲  null null  
//因爲類的作用域和參數的作用域重疊
public calss Hero{
  String name; 
  int hp;
  float armor;
  int moveSpeed;
  
  public void setName(String name){
    this.name = name;       //把屬性的引用指向參數的引用
  }
  public static void main(String[] args){
     Hero h1 = new Hero();
     System.out.println(h.name);
     h.setName("蓋倫");
     
     System.out.println(h.name);
     }
}

(2)調用本類的方法(成員方法和構造方法)。

public calss Hero{
  String name; 
  int hp;
  float armor;
  int moveSpeed;
  
  public Hero(String name){
    this.name = name;
  }
  
  public Hero(String name, int hp){
    this(name);   //直接引用第一段方法來初始化name
    this.hp = hp;
  }
 }

(3)表示當前對象。

public calss Hero{
  String name; 
  int hp;
  float armor;
  int moveSpeed;
  
  public void printAdress(){
    System.out.println(this);
  }
  
   public static void main(String[] args){
     Hero h1 = new Hero();
     System.out.println(h1);
     h.printAdress();
   }
   
   public static void main(String[] args){
     Hero h2 = new Hero();
     System.out.println(h2);
     h.printAdress();
   }
}
//此段代碼運行結果是分別打印h1,h2的地址

static

用來修飾成員變量和成員方法。

static關鍵字聲明的屬性和方法稱爲類屬性和類方法,被所有對象共享,直接進行調用。

靜態變量

public calss He{
  //定義了一個靜態變量a
  static String a = "123";
  
  public static void main(String[] args){
    //靜態變量可以直接用類名來訪問,無需創建類的對象。
    System.out.println(He.a);
    
    He hello = new He();   //創建類的對象
    System.out.println(hello.a);  //使用對象名來訪問靜態變量
    hello.a = "456";   //使用對象名形式修改靜態變量的值
    System.out.println(He.a);   //再次使用類名訪問靜態變量,值已改變
  }
}
成員變量和局部變量
成員變量 局部變量
在類中的位置 類中方法外 方法定義中或方法聲明上
在內存中的位置 堆中 棧中
生命週期 隨着對象的創建而存在,隨着對象的消失而消失 隨着方法的調用而存在,隨着方法的調用完畢而消失
初始化值 有默認值 無默認值,必須定義,賦值,纔可使用

靜態方法

public calss He{
    public static void print(){
       System.out.println("哈哈哈");
    }
    public static void main(String[] args){
       He.print();  //直接用類名調用靜態方法
    }
}
注意:

1.靜態方法中可以直接調用同類中的靜態成員,但不能直接調用非靜態成員。

2.在普通成員方法中,可以直接訪問同類的非靜態變量和靜態變量。

3.靜態方法中不能直接調用非靜態方法,需要通過對象來訪問非靜態方法。

super

super關鍵字代表當前超類的對象。super表示從子類調用父類中的指定操作。

如果在子類B中重寫了父類的方法,若在重寫的方法中我們需要調用父類的該方法,則必須使用super關鍵字。否則按照子類優先原則,則會一直調用子類的方法,造成死循環。

final

用途:

變量,方法,類

變量

對於一個final變量,必須賦初始值,並且只能初始化一次。

若是基本數據類型的變量,則在其初始化後,值不可再更改。

若是引用類型的變量,則在其初始化後,不能再讓其指向另一個對象。

被final修飾的類不能被繼承。

方法

被final修飾的方法名不能被重寫。【父類中若有被final修飾的方法,則子類不能再重寫。】

保留字

保留字是爲java預留的關鍵字,	標誌符包含關鍵字而關鍵字裏面又包含兩個保留字,具體的保留字:goto、const。

包(package)

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

包的作用

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

包的語法格式

package pkg1[.pkg2[.pkg3...]];

輸入

1.使用Scanner類

2.使用java.io.BufferedReader和java.io.InputStreamReader

3、使用java.io.Console

輸出

Java中輸出語句有以下四種

1.System.out.println(1234); //換行打印
2.System.out.print(1234);  //不換行打印
3.System.out.write(4567); //字節輸出
4.System.out.printf(“%+8.3f、n”,3.14);  //通過格式化文本和參數列表輸出
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章