1. 程式人生 > 實用技巧 >R語言 dplyr selec 輔助函式

R語言 dplyr selec 輔助函式

在建立例項的時候,我們經常需要同時初始化欄位

Person ming = new Person();
ming.setName("小明");
ming.setAge(12);

是否有一種方法可以讓我們在建立例項的時候就直接完成對欄位的初始化:

這就需要用到 構造方法

一般來說建立 例項的時候,是通過構造方法來完成初始化例項的。


class Person {
    private String name;
    private int age;

    public Person(String name, int age) { //有參構造方法
        this.name = name;
        this.age = age;
    }
    
    public String getName() {
        return this.name;
    }

    public int getAge() {
        return this.age;
    }
}

public class Main {
    public static void main(String[] args) {
        Person p = new Person("Xiao Ming", 15);
        System.out.println(p.getName());
        System.out.println(p.getAge());
    }
}


構造方法的名稱就是 類名。構造方法的引數沒有限制,在方法內部,也可以編寫任意語句。但是和普通的方法相比,構造方法沒有返回值,呼叫構造方法,必須用 new操作符。

預設構造方法

任何的class都有構造方法。

也就是說 如果我們沒有顯示的定義構造方法我們的編譯器會自動給我們生成一個預設的構造方法。一個無參的構造方法,同樣,沒有執行語句:

class Person {
    public Person() {
    }
}

如果我們自己定義了構造方法,那麼編譯器就不再自動建立預設的構造方法:

public class Main {
    public static void main(String[] args) {
        Person p1 = new Person("Xiao Ming", 15); // 既可以呼叫帶引數的構造方法
        Person p2 = new Person(); // 也可以呼叫無引數構造方法
    }
}

class Person {
    private String name;
    private int age;

    public Person() { //無參構造方法
    }

    public Person(String name, int age) {//有參構造方法
        this.name = name;
        this.age = age;
    }
    
    public String getName() {
        return this.name;
    }

    public int getAge() {
        return this.age;
    }
}

也就是,如果我們自己定義了一個有參的構造方法 ,在new物件的時候,使用了有參構造方法,那麼我們也必須建立一個無參的構造方法,不然會報錯。

一個構造方法可以呼叫其他的構造方法,這樣做的目的是便於程式碼的複用。呼叫其他構造方法 的語句是 this(....);

class Person {
    private String name;
    private int age;

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public Person(String name) {
        this(name, 18); // 呼叫另一個構造方法Person(String, int)
    }

    public Person() {
        this("Unnamed"); // 呼叫另一個構造方法Person(String)
    }
}