程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> Java —類和對象

Java —類和對象

編輯:關於JAVA

Java —類和對象。本站提示廣大學習愛好者:(Java —類和對象)文章只能為提供參考,不一定能成為您想要的結果。以下是Java —類和對象正文


  • 類和對象
  1. 類是對象的類型,是具有相同的屬性和方法的一組對象的集合。
  2. 定義類
    • 訪問修飾符 class 類名 { 
    •   數據類型 屬性名;
    •   訪問修飾符 返回值類型 方法名 {}
    • }
  3. 創建對象:類名 對象名 = new 類名();
  4. 使用對象:引用對象的屬性:對象名.屬性名;引用對象的方法:對象名.方法名();
  5. 可以基於一個類創建多個該類的對象,每個對象都擁有自己的成員,互相獨立。
  • 成員變量和局部變量
  1. 成員變量:在類中定義,描述對象將要有什麼。可以在本類的方法或其他類的方法中使用。java會給成員變量一個初始值。
  2. 局部變量:在類的方法中定義,在方法中臨時保存數據。只能在當前的方法中使用。java不會給局部變量賦予初始值。
  3. 兩類變量同名時,局部變量具有更高的優先級。

Telephone.java

package com.test;

public class Telephone {
    double screen;
    double cpu;
    double mem;
    public void sendMessage() {
        System.out.println("screen:" + screen + ";cup:" + cpu + ";mem:" + mem);
    }
}

Demo.java

package com.test;

public class Demo7 {
    public static void main(String[] args) {
        Telephone phone = new Telephone();
        phone.sendMessage();
        phone.screen = 5.4;
        phone.cpu = 1.2;
        phone.mem = 6.0;
        phone.sendMessage();
    }
}

  輸出結果:

  screen:0.0;cup:0.0;mem:0.0
  screen:5.4;cup:1.2;mem:6.0

  •  構造方法
  1. 之前對對象的定義並不完全正確,應該是new + 構造方法。
  2. 構造方法是定義在java類中一個用來初始化對象的方法。
  3. 構造方法與類同名,且沒有返回值。
  4. 當無指定構造方法時,系統會自動添加無參數的構造方法
  5. 當有指定構造方法(無論是有參數、無參數的構造方法),都不會自動添加無參數的構造方法
  6. 構造方法的重載:方法名相同,但參數不同的多個方法,調用時會自動根據不同的參數選擇相應的方法
  7. 構造方法不但可以給對象賦值,還可以保證給對象的屬性賦一個合理的值

  Telephone.java

package com.test;

public class Telephone {
    double screen;
    double cpu;
    double mem;
    public Telephone(){
        System.out.println("無參數的構造方法");
    }
    public Telephone(double newScreen, double newSpu, double newMem){
        screen = newScreen;
        cpu = newSpu;
        mem = newMem;
        System.out.println("有參數的構造方法");
    }
    public void sendMessage() {
        System.out.println("screen:" + screen + ";cup:" + cpu + ";mem:" + mem);
    }
}

  Demo.java

package com.test;

public class Demo {
    public static void main(String[] args) {
        Telephone phone = new Telephone();
        phone.screen = 5.4;
        phone.cpu = 1.2;
        phone.mem = 6.0;
        phone.sendMessage();
        
        Telephone phone1 = new Telephone(5.0, 1.5, 4.0);
        phone1.sendMessage();
    }
}

  運行結果:

  無參數的構造方法

  screen:5.4;cup:1.2;mem:6.0

  有參數的構造方法

  screen:5.0;cup:1.5;mem:4.0

  •  靜態變量

  Java 中被 static 修飾的成員稱為靜態成員或類成員。它屬於整個類所有,而不是某個對象所有,即被類的所有對象所共享。當系統第一次使用該類時,就會為其分配內存空間直到該類被卸載才會進行資源回收!

  靜態成員可以使用類名直接訪問,也可以使用對象名進行訪問。當然,鑒於他作用的特殊性更推薦用類名訪問。

  • 靜態方法

  static 修飾的方法稱為靜態方法或類方法。

  1. 靜態方法中可以直接調用同類中的靜態成員和靜態方法,但不能直接調用非靜態成員和靜態方法。如果希望在靜態方法中調用非靜態變量和非靜態方法,可以通過創建類的對象,然後通過對象來訪問非靜態變量和非靜態方法。
  2. 在普通成員方法中,則可以直接訪問同類的非靜態變量和靜態變量。
package com.test;

public class Demo8 {
    public static String classroom = "Java班";
    public String schoolName = "希望小學";
    
    public static void getName() {
        System.out.println("=======getName=======");
        System.out.println(classroom);
        Demo8 demo  = new Demo8();
        System.out.println(demo.schoolName);
    }
    
    public void func() {
        System.out.println("=======func=======");
        System.out.println(classroom);
        System.out.println(schoolName);
    }

    public static void main(String[] args) {
        System.out.println("=======main=======");
        System.out.println(Demo8.classroom);
        System.out.println(classroom);
        Demo8.getName();
        getName();
        Demo8 demo = new Demo8();
        demo.func();
    }
}

  執行結果:

=======main=======
Java班
Java班
=======getName=======
Java班
希望小學
=======getName=======
Java班
希望小學
=======func=======
Java班
希望小學
  •  初始化塊進行數據賦值

  在類的聲明中,可以包含多個初始化塊,當創建類的實例時,就會依次執行這些代碼塊。如果使用 static 修飾初始化塊,就稱為靜態初始化塊。

  注意:靜態初始化塊只在類加載時執行,且只會執行一次,同時靜態初始化塊只能給靜態變量賦值,不能初始化普通的成員變量。

  

package com.test;

public class Demo9 {
    int age;
    String name;
    static String sex;
    public Demo9() {
        age = 12;
        System.out.println("通過構造函數初始化age");
    }
    {
        name = "java";
        System.out.println("通過初始化塊初始化name");
    }
    static {
        sex = "女";
        System.out.println("通過靜態初始化塊初始化sex");
    }
    
    public static void main(String[] args) {
        Demo9 demo = new Demo9();
        System.out.println("年齡" + demo.age + "姓名" + demo.name + "性別" + sex);
        Demo9 demo1 = new Demo9();
    }
}

  執行結果:

通過靜態初始化塊初始化sex
通過初始化塊初始化name
通過構造函數初始化age
年齡12姓名java性別女
通過初始化塊初始化name
通過構造函數初始化age

  程序運行時靜態初始化塊最先被執行,然後執行普通初始化塊,最後才執行構造方法。由於靜態初始化塊只在類加載時執行一次,所以創建對象demo2時沒有執行靜態初始化塊。

  

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved