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();
}
}
如果返回值类型是一个接口名,那么我们需要给他返回的一定是该接口实现类的对象。