javaSE引數傳遞問題、返回值問題、內部類總結
阿新 • • 發佈:2018-11-03
思維導圖
引數值傳遞問題
之前我們見到方法傳參一般傳遞的都是基本資料型別的引數,比如我要一個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();
}
}
如果返回值型別是一個介面名,那麼我們需要給他返回的一定是該介面實現類的物件。