在之前我们学习过的返回值类型有两大类:
1.基本数据类型:byte,short,int,long,float,double,char,boolean
2.引用数据类型:类(String也属于类),数组,接口
当返回值是一个基本数据类型的时候,我们返回的是一个具体的值或者变量,或者是布尔值
我们这里不讲基本数据类型的返回值
如果一个方法中定义的是一个引用数据类型的时候返回的是一个该类的对象或者是该类的子类对象
1.当一个普通的类作为一个方法的返回值类型时:返回值要是一个类的对象名
class Student{
public void fu(){
System.out.println("好好学习,天天向上");
}
}
class StudentDemo1 {
public Student funzi(){ //用父类类名作为返回值类型,其返回的值必须是一个对象,这里返回的是一个父类的对象
return new Student();
}
}
public class Demo2 {
public static void main(String[] args) {
new StudentDemo1().funzi().fu(); //定义一个类对象调用其中的方法,并且返回一个父类对象再进行调用父类的方法
}
}
2.当一个抽象类名作为一个返回值类型的时:返回值要是一个父类的子类对象
//将一个抽象类名作为返回值类型
abstract class Student2{
public abstract void fu1();
}
class StudentZi extends Student2{
public void fu1(){
System.out.println("我想成为一个富翁");
}
}
class StudentDemo2{
public Student2 funzi1(){
return new StudentZi();
}
}
public class Demo2 {
public static void main(String[] args) {
new StudentDemo2().funzi1().fu1(); //定义一个类对象(该类中有一个方法是以抽象类名为返回值类型的),
// 调用该类里面的方法,并返回一个子类(该子类是具体继承了抽象类的子类)的对象,再调用返回对象中的方法,最后输出为:我想成为一个富翁
}
}
3.当一个接口类名作为返回值类型的时候:返回值要是一个实现接口的具体类的对象
//定义一个接口,将接口名当做一个方法的返回值类型,这时候返回的值为该接口具体实现的类的对象
interface Inter1{
public abstract void fun2();
}
class Student3 implements Inter1{
public void fun2(){
System.out.println("我想成为亿万富翁");
}
}
class StudentDemo3{
public Inter1 show(){
return new Student3();
}
}
public class Demo2 {
public static void main(String[] args) {
new StudentDemo3().show().fun2(); //定义一个类对象(该类中有一个方法是以接口名为返回值类型的),
// 调用该类里面的方法,并返回一个子类的对象(该类是具体实现了接口的类),再调用该具体实现类中的方法
}
}
标签:对象,void,多态,public,一个,类型,返回值,class
From: https://www.cnblogs.com/ndmtzwdx/p/18433310