1. 程式人生 > >關於Java的小知識-類的載入-引數傳遞-多型

關於Java的小知識-類的載入-引數傳遞-多型


/**
 * 測試類的載入順序
 */
public class Father {

    public Father() {
        System.out.println("This is Father contr");
    }

    {
        System.out.println("this is Father blouk");
    }

    static {
        System.out.println("this is Father static blouk");
    }
}

class Son extends Father {
    public Son() {
        System.out.println("this is son cont");
    }

    /*
普通程式碼塊
構造方法呼叫之前  會呼叫無參的標準的普通程式碼塊
     */ {
        System.out.println("this is Son common method");
    }

    /*
    靜態方法首先進行載入 有且只加載一次
     */
    static {
        System.out.println("this is son static method");
    }
}

class TestMethod {
    public static void main(String[] args) {
        new Son();
        System.out.println("+++++++++++++++++++++++++++");

        new Son();
        System.out.println("Second++++++++++++++++++++++");

        new Father();
        System.out.println("print Father===========================");

        /*
this is Father static blouk
this is son static method
this is Father blouk
This is Father contr
this is Son common method
this is son cont
+++++++++++++++++++++++++++
this is Father blouk
This is Father contr
this is Son common method
this is son cont
Second++++++++++++++++++++++
this is Father blouk
This is Father contr
print Father===========================
         */
    }
}

引數傳遞:


/**
 * 傳值
 */
public class SendVallue {
    public void changeValue1(int age) {
        age = 30;
    }

    public void changeValue2(Person person) {
        person.setName("XXXX");
    }

    public void changeValue3(String string) {
        string = "XXXX";
    }

    public static void main(String[] args) {
        SendVallue sendVallue = new SendVallue();
        int age =10;
        sendVallue.changeValue1(age);
        System.out.println(age);

        Person person = new Person("asdf");
        sendVallue.changeValue2(person);
        System.out.println("person"+person.getName());

        String string = "123";
        sendVallue.changeValue3(string);
        System.out.println(string);


    }
}

多型:

/**
 * 多型是執行期發生的事情
 */
public class Polymorphic {
    public static Anmail getInstance(int key) {
        Anmail result = null;

        switch (key) {
            case 0:
                result = new Dog();
                break;
            case 2:
                result = new Cat();
                break;
            case 1:
                result = new Sheeps();
                break;
        }

        return result;
    }

    public static void main(String[] args) {
        Anmail instance = Polymorphic.getInstance(new Random().nextInt(3));
        instance.eat();
        System.out.println(instance);
    }
}

interface Anmail {
    void eat();
}

class Dog implements Anmail {

    @Override
    public void eat() {
        System.out.println("dog eat boon" + 123123);
    }
}

class Cat implements Anmail {

    @Override
    public void eat() {
        System.out.println("cat eat fish" + 3232);
    }
}

class Sheeps implements Anmail {

    @Override
    public void eat() {
        System.out.println("sheep eat gress" + 12312312);
    }
}