目录
- 一、基本数据类型
- 二、引用数据类型
- 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 {//学生类
@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();
}
}
因作者水平有限,如果有错误,希望能够指出。
如果不同的见解,也可以在评论下方一起讨论哦!