Java中方法参数类型及返回值类型探究

一、基本数据类型

数据类型
整型byte、short、int、long
字符型char
浮点型float、double
布尔型boolean
  • 如果要的形参类型或返回值类型是基本数据类型,就给一个基本数据类型的变量或常量

二、引用数据类型

1. 类名作为形参或返回值类型

  • 将该类的对象作为形参或返回值
public class Student {//学生类
    public String name = "";
    public int age = 0;//成员变量

    public void study() {//成员方法
        System.out.println("学习");
    }

    public Student() {//空参构造
    }

    public Student(String name, int age) {//有参构造
        this.name = name;
        this.age = age;
    }
}
public class MyTest {//测试类
    public static void main(String[] args) {
        Student student = getStudent("张三", 20);//调用方法获得Student类的对象
        show(student);//类的对象作为方法参数
    }

    private static Student getStudent(String name, int age) {//得到Student类的一个对象
        return new Student(name, age);//类的对象作为返回值
    }

    private static void show(Student student) {//打印传入Student类的对象的成员变量
        System.out.println("name:" + student.name + "\nage:" + student.age);
    }
}

2. 抽象类名作为形参或返回值类型

  • 当形参类型或返回值类型为抽象类时,因为抽象类不能实例化,所以无法直接将抽象类的对象作为参数传入。但是我们可以将抽象类的非抽象子类的对象作为参数传入,其实也就是多态的形式(抽象类名 变量名 = new 非抽象子类(); )
abstract class People {//抽象类人类
    public String name = "";
    public int age = 0;//成员变量

    public abstract void study();
}

public class Student extends People {//学生类

    @Override
    public void study() {//对study方法重写
        System.out.println("学习");
    }

    public Student() {//空参构造
    }

    public Student(String name, int age) {//有参构造
        this.name = name;
        this.age = age;
    }
}

public class MyTest {//测试类

    public static void main(String[] args) {
        People people = getStudent("张三", 20);//多态形式,成员变量调用父类,成员方法优先调用子类重写过的
        show(people);//将抽象类的非抽象子类的对象作为方法参数
    }

    private static People getStudent(String name, int age) {//抽象类类型People作为返回值类型

        return new Student(name, age);//将抽象类的非抽象子类的对象作为返回值
    }

    private static void show(People people) {//抽象类类型作为方法参数类型

        System.out.println("name:" + people.name + "\nage:" + people.age);
    }
}

3. 接口名作为形参或返回值类型

  • 接口也不能实例化,所以不能简单的将“接口的对象”作为参数传递或返回,与抽象类一样,虽然不能直接实例化,但是接口可以被实现,可以用实现接口的非抽象类的对象作为方法参数或返回值
interface Shopping {//购物接口
    public static final double money = 500;//定义购物金额

    public abstract void shopping();//定义购物抽象方法
}

public class Student implements Shopping {//学生类
    public String name = "";
    public int age = 0;//成员变量

    public Student() {//空参构造
    }

    public Student(String name, int age) {//有参构造
        this.name = name;
        this.age = age;
    }

    @Override
    public void shopping() {//对接口的shopping方法重写
        System.out.println("学生购物买文具比较多");
    }
}

public class MyTest {//测试类

    public static void main(String[] args) {
        Shopping shopping = getStudent("张三", 20);//多态形式,成员变量调用父类,成员方法优先调用子类重写过的
        show(shopping);//将接口的非抽象实现类的对象作为方法参数
    }

    private static Shopping getStudent(String name, int age) {//接口类型作为返回值类型

        return new Student(name, age);//将接口的非抽象实现类的对象作为返回值
    }

    private static void show(Shopping shopping) {//接口类型作为方法参数类型

        System.out.println("money:" + shopping.money);
        shopping.shopping();
    }
}

因作者水平有限,如果有错误,希望能够指出。
如果不同的见解,也可以在评论下方一起讨论哦!

  • 5
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值