Java面向對象編程(OOP)

Java面向對象(OOP)

特點

  • 封裝
  • 繼承
  • 多態

基本概念

類(Class)

  • 同一種對象抽象概括

  • 完整的類

    • 靜態屬性:變量
    • 動態行爲:方法
    class Student{    // 類名:Student
        // 靜態屬性 —— Fields
        name: String;  // 成員變量
        height: double;
        weight: double;
        
        // 動態行爲 —— 方法
        walk(): void;
        eat(): void;
    }
    
    • 例:

      // Student.java
      public Student{
          public String name;  // 成員變量
          public double height;
          public double weight;
          
          public void walk(){  // 方法
              System.out.println("在走路");
          }
          public void eat(){
              System.out.println("在喫飯");
          }
      }
      

對象(Object)

  • 具體的某個事物

類的定義

創建對象

  • 聲明格式:引用類型變量用來給對象取名

    類名 變量名;

    // Main.java
    public class Main {
    	public static void main(String[] args) {
    	    Student s1 = new Student();  // 在內存裏創建一個Student對象,創建一個s1引用變量,並將s1指向新建的Student對象
            s1.height = 180;
            s1.weight = 100;
            System.out.println(s1.height);
            
    	    Student s2 = new Student();
            s2.height = 170;
            s2.weight = 90;
            System.out.println(s2.wdight);
            s1.walk();
            s2.eat();
    	}
    }
    
    

Java爲成員變量賦默認值

  • 整形int0
  • 浮點型double/float0.0
  • 布爾型Booleanfalse
  • 引用類型 :null(空)

構造方法

構造方法

  • 構造方法的作用是創建對象(初始化對象)

    Student s1 = new Student(12, "Jack");  // 使用new操作符調用構造方法創建對象
    Student s2 = new Student();
    
    class Student{
        int id;
        String name;
        public Student(int id, String name){  // 有參構造方法
            this.id = id;
            this.name = name;
        }
        public Student(){  // 無參構造方法
            
        }
    }
    
    1. 構造方法必須和所在類名稱相同。
    2. 構造方法沒有返回值類型,甚至沒有void
    3. 構造方法是在創建一個對象時由new操作符調用的。
  • 默認無參構造方法(編譯器)

    // 程序員沒有定義構造方法,編譯器默認給對象創建一個無參構造方法
    
  • 構造方法重載

    方法名相同,參數列表不同

Java常見類

Date類

// test_2.java
import java.util.Date;;
public class test_2 {
	public static void main(String[] args) {
		Date d = new Date();
		System.out.println(d);
	}
}

Random類

// test_3.java
import java.util.Random;
public class test_3 {
	public static void main(String[] args) {
		Random r = new Random();
		System.out.println(r.nextInt(10));
	}
}

static關鍵字

static作用

  • 修飾成員變量常量方法以及代碼塊

靜態成員變量

class Student{
    static String name = "Jack";
}
System.out.println(Student.name);  // 可以通過類名訪問靜態成員變量

靜態方法

class Student{
    static String name = "Jack";
    static void foo(){
        System.out.println("Hello World!!!");
    }
}
Student.foo();    // 可以通過類名調用靜態方法
  • 靜態方法只能訪問靜態成員變量,不能訪問非靜態成員變量
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章