1. 程式人生 > >javaSE引數傳遞問題、返回值問題、內部類總結

javaSE引數傳遞問題、返回值問題、內部類總結

 思維導圖

 引數值傳遞問題

之前我們見到方法傳參一般傳遞的都是基本資料型別的引數,比如我要一個int型別,只需要在呼叫方法的時候傳一個int型別的數值就好了。但是當傳入引數需要一個引用資料型別,那麼該如何考慮呢?

類名作為傳入引數

class Student{
    String name="小明";
    public void study(){
    }
}
//類名作為引數傳遞
public class demo1 {
    public static void main(String[] args) {
        doHomework(new Student());
    }

    public static void doHomework(Student student){
        System.out.println(student.name+"做作業");
    }
}

當傳入引數是一個類名的時候,我們需要傳入的是一個該類的物件。比如上面程式碼中引數型別為Student,我們就new(建立)了一個Student物件傳進去。

抽象類類名作為傳入引數

abstract class People {
    String name="小明";
    public abstract void study();

}
class Student extends People{
    public void study() {

    }
}
//類名作為引數傳遞
public class demo1 {
    public static void main(String[] args) {
        doHomework(new Student());
    }

    public static void doHomework(People people){
        System.out.println(people.name+"做作業");
    }
}

當傳入引數是一個抽象類類名的時候,我們需要傳入的是一個該抽象類子類的物件。比如上面程式碼中引數型別為People這個抽象類,我們就new(建立)了一個他的子類Student物件傳進去。

介面名作為傳入引數

 

public interface MyInterface {
    public abstract  void chat();
}

class Phone implements MyInterface{
    @Override
    public void chat() {
        System.out.println("打電話");
    }
}
class Demo2{
    public static void main(String[] args) {
        chat(new Phone());
    }
    public static void chat(MyInterface my){
         my.chat();
    }
}

當傳入引數是一個介面名的時候,我們需要傳入的是該介面實現類的物件。比如上面程式碼中引數型別為MyInterface這個介面,我們就new(建立)了一個他的實現類的物件傳進去。

返回值問題

同樣的開發中不可能方法的返回值全部是基本資料型別的,而是大多數均是返回引用資料型別。

類名作為返回值

class Student{
    String name;
}
public class Test {
    public static Student returnStudent(){
        Student student = new Student();
        student.name="小明";
        return student;
    }
}

這段程式碼中返回值是Student,所以需要建立一個該類物件student返回。

抽象類類名作為返回值

abstract class People{
    public abstract void say();
}
class Student extends People{
    @Override
    public void say() {
        //todo
    }
}
public class Test {
    public static People returnStudent(){
        return new Student();
    }
}

如果返回值型別是一個抽象類類名,那麼我們需要給他返回的一定是一個該抽象類的子類物件。

public interface MyInterface {
    public abstract  void chat();
}
class Phone implements  MyInterface{
    @Override
    public void chat() {
        
    }
}
class Test2{
    public static MyInterface returnInterface(){
        return new Phone();
    }
}

如果返回值型別是一個介面名,那麼我們需要給他返回的一定是該介面實現類的物件。