Java开发——15.引用类型方法的参数和返回值

Java开发——15.引用类型方法的参数和返回值

引用数据类型:​

Java中只有两种数据类型: 基本数据类型和引用数据类型 ,所以除了基本数据类型以外的所有类型都可以归结到引用数据类型中。基本类型可以作为成员变量、作为方法的参数以及作为方法的返回值,那么当然引用类型也是可以的。


今天讲三种引用数据类型作为方法的参数和返回值:普通类、抽象类以及接口。


普通类-作为方法的参数及返回值:


作为形参:

普通类-作为方法的形参
方法的形参是类名,其实需要的是该类的对象 实际传递的是该对象的【地址值】
public class Student {
    public void study(){
        System.out.println("好好学习,天天向上");
public class StudentDemo {
    //把普通类当作一个参数
    public void method(Student student){
        student.study();
public class StudentTest {
    public static void main(String[] args) {
        StudentDemo st = new StudentDemo();
        Student s = new Student();//作为参数传递给StudentDemo 类中的method方法
        st.method(s);


作为返回值:

普能类-作为方法的返回值
方法的返回值是类名,其实返回的是该类的对象 实际传递的,也是该对象的【地址值】
public class Student {
    public void study(){
        System.out.println("好好学习,天天向上");
public class StudentDemo {
    //返回值类型为一个类
    public Student getStudent(){
        return  new Student();
public class StudentTest {
    public static void main(String[] args) {
        StudentDemo st = new StudentDemo();
        Student student = st.getStudent();//返回的是一个Student对象,所以可以用对象直接接收
        student.study();
}




抽象类-作为方法的参数及返回值:


抽象类作为形参和返回值

1.方法的形参是抽象类名,其实需要的是该抽象类的子类对象
2.方法的返回值是抽象类名,其实返回的是该抽象类的子类对象


作为形参:

public abstract class Person {
    public abstract void study();
public class PersonDemo {
    public void method(Person p){
        p.study();
//抽象类作为参数,必须实例化
public class Student extends Person {
    @Override
    public void study() {
        System.out.println("好好学习,天天向上!!");
public class PersonTest {
    public static void main(String[] args) {
        PersonDemo pd = new PersonDemo();
        //抽象类需要一个具体类来实现
        Person p = new Student();
        //method的参数是一个抽象类,那抽象类如何实例化呢? 多态的方式!!!
        pd.method(p);


作为返回值:

public abstract class Person {
    public abstract void study();
public class PersonDemo {
    //返回对象是一个抽象类
    public Person getPerson(){
        //person是一个抽象类,只能通过多态的方法实例化,以下展示代码的分解
        // Person p = new Student();
        // return p;
        return new Student();
//具体子类实现抽象类Person
public class Student extends Person {
    @Override
    public void study() {
        System.out.println("好好学习,天天向上!!");
public class PersonTest {
    public static void main(String[] args) {
        PersonDemo pd = new PersonDemo();
        Person person = pd.getPerson();
        person.study();




接口类-作为方法的参数及返回值


接口作为形参和返回值:

1.方法的形参是接口名,其实需要的是该接口的实现类对象
2.方法的返回值是接口名,其实返回的是该接口的实现类对象


作为形参:

public interface Love {
    public abstract void show();
public class LoveDemo {
    //接口作为参数
    public void method(Love love){
        love.show();
//子类实现接口
public class LoveImpl implements Love {
    @Override
    public void show() {
        System.out.println("爱一燕");
public class LoveTest {
    public static void main(String[] args) {
        LoveDemo ld = new LoveDemo();
        //需要对接口的参数进行实现化,多态的方法
        Love love = new LoveImpl();
        //参数需要的是一个接口
        ld.method(love);


作为返回值:

public interface Love {
    public abstract void show();
public class LoveDemo {
    //接口作为返回值
    public Love getLove(){
        // 接口不能直接返回,需要实例化,多态的方式
        // Love love = new LoveImpl();
        // return love;
        return new LoveImpl();
//子类实现接口
public class LoveImpl implements Love {
    @Override
    public void show() {
        System.out.println("爱一燕");
public class LoveTest {
    public static void main(String[] args) {
        LoveDemo ld = new LoveDemo();