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

目录

    • 一、基本数据类型
    • 二、引用数据类型
      • 1. 类名作为形参或返回值类型
      • 2. 抽象类名作为形参或返回值类型
      • 3. 接口名作为形参或返回值类型

一、基本数据类型

数据类型
整型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 {//学生类@Overridepublic 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;}@Overridepublic 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();}
}

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

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

目录

    • 一、基本数据类型
    • 二、引用数据类型
      • 1. 类名作为形参或返回值类型
      • 2. 抽象类名作为形参或返回值类型
      • 3. 接口名作为形参或返回值类型

一、基本数据类型

数据类型
整型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 {//学生类@Overridepublic 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;}@Overridepublic 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();}
}

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