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();
    }
}

如果返回值类型是一个接口名,那么我们需要给他返回的一定是该接口实现类的对象。

 

猜你喜欢

转载自blog.csdn.net/qq_37291761/article/details/83113458