1. 程式人生 > >類和物件的初步認識(建構函式)

類和物件的初步認識(建構函式)

類和物件的初步認識(建構函式)

Java是一門面向物件的程式語言(OOP) ,

面向物件程式三大的特點:封裝,繼承,多型

1.類:

class Person {
   private int age;
   
    public int getAge() {
       return age;
   }
   public void setAge(int age) {
       this.age = age;
   }
  }

Person,是一個類,它的成員變數age是私有的,別人無法訪問,但是Java提供了一系列的set,get方法去可以訪問它的值;

public static void main(String[] args) {
        Person person= new Person();
        person.setAge(10);
        System.out.println(person.getAge());
    }

類先建立一個物件,然後通過物件去訪問(物件建立的時候,首先要為物件分配記憶體
然後去呼叫合適的建構函式);

類和物件的關係應該是:類-----例項化------->物件

2.構造方法:

(1).構造方法格式
public 類名(…){

​ }

(2).構造方法的作用
給物件做初始化操作的,一般給成員變數賦值
(物件一被建立,就需要執行的操作)

(3).構造方法什麼時候執行
new 物件的時候執行

class Person {
    private int age;
    private String name;

    public Person() {//不帶引數的建構函式  建構函式可以被過載
        System.out.println("Person()");
        this.age = 20;//this:指向當前物件的記憶體
        this.name = "002";
    }
    public Person(String name,int age) {
        System.
out.println("Person(name,age)"); this.age = age; this.name = name; } public Person(String name) { System.out.println("Preson(name)"); this.name = name; } public String toString() { return "Person{" + "age=" + age + ", name='" + name + '\'' + '}'; } } public static void main(String[] args) { Person person = new Person(); System.out.println("==========="); System.out.println(person); System.out.println("===========》"); Person person1 = new Person("003",22); System.out.println(person1); System.out.println("====》=======》"); Person person2 = new Person("004"); System.out.println(person2); } }
執行的結果為:
Person(name,age)
Person()
===========
Person{age=20, name='002'}
===========》
Person(name,age)
Person{age=22, name='003'}
====》=======》
Preson(name)
Person{age=0, name='004'}

new了一個新的物件preson,但並未給他定義引數值;同時它就呼叫合適的建構函式;定義的Person只有兩個成員類變數,它會優先呼叫帶有兩個引數的構造方法;public Person(String name,int age)中並未給他賦值,所以它會繼續呼叫無參的建構函式,將其初始化值賦予。所以列印的person值為:age=20,name=002;

而對於person1來說,因為Person person1 = new Person(“003”,22); new物件的時候,同時賦予了其中成員變數的值,所以它會直接呼叫帶兩個引數的成員變數並賦值,然後結束。

而對於person2來說,因為Person person2 = new Person(“004”); new物件時候,值給了它一個name的值,所以它會呼叫一個引數的建構函式public Person(String name);進行賦值。

構造方法的注意事項
a:如果沒有寫構造方法,系統會有一個預設的空引數構造方法
b:如果寫了構造方法,原來的預設空引數構造方法,就不再提供了