引用数据类型:
Java中只有两种数据类型:基本数据类型和引用数据类型,所以除了基本数据类型以外的所有类型都可以归结到引用数据类型中。基本类型可以作为成员变量、作为方法的参数以及作为方法的返回值,那么当然引用类型也是可以的。
今天讲三种引用数据类型作为方法的参数和返回值:普通类、抽象类以及接口。
普通类-作为方法的参数及返回值:
作为形参:
普通类-作为方法的形参
方法的形参是类名,其实需要的是该类的对象 实际传递的是该对象的【地址值】
publicclassStudent { publicvoidstudy(){ System.out.println("好好学习,天天向上"); } } publicclassStudentDemo { //把普通类当作一个参数publicvoidmethod(Studentstudent){ student.study(); } } publicclassStudentTest { publicstaticvoidmain(String[] args) { StudentDemost=newStudentDemo(); Students=newStudent();//作为参数传递给StudentDemo 类中的method方法st.method(s); } }
作为返回值:
普能类-作为方法的返回值
方法的返回值是类名,其实返回的是该类的对象 实际传递的,也是该对象的【地址值】
publicclassStudent { publicvoidstudy(){ System.out.println("好好学习,天天向上"); } } publicclassStudentDemo { //返回值类型为一个类publicStudentgetStudent(){ returnnewStudent(); } } publicclassStudentTest { publicstaticvoidmain(String[] args) { StudentDemost=newStudentDemo(); Studentstudent=st.getStudent();//返回的是一个Student对象,所以可以用对象直接接收student.study(); } }
抽象类-作为方法的参数及返回值:
抽象类作为形参和返回值
1.方法的形参是抽象类名,其实需要的是该抽象类的子类对象
2.方法的返回值是抽象类名,其实返回的是该抽象类的子类对象
作为形参:
publicabstractclassPerson { publicabstractvoidstudy(); } publicclassPersonDemo { publicvoidmethod(Personp){ p.study(); } } //抽象类作为参数,必须实例化publicclassStudentextendsPerson { publicvoidstudy() { System.out.println("好好学习,天天向上!!"); } } //测试publicclassPersonTest { publicstaticvoidmain(String[] args) { PersonDemopd=newPersonDemo(); //抽象类需要一个具体类来实现Personp=newStudent(); //method的参数是一个抽象类,那抽象类如何实例化呢? 多态的方式!!!pd.method(p); } }
作为返回值:
publicabstractclassPerson { publicabstractvoidstudy(); } publicclassPersonDemo { //返回对象是一个抽象类publicPersongetPerson(){ //person是一个抽象类,只能通过多态的方法实例化,以下展示代码的分解// Person p = new Student();// return p;returnnewStudent(); } } //具体子类实现抽象类PersonpublicclassStudentextendsPerson { publicvoidstudy() { System.out.println("好好学习,天天向上!!"); } } //测试publicclassPersonTest { publicstaticvoidmain(String[] args) { PersonDemopd=newPersonDemo(); Personperson=pd.getPerson(); person.study(); } }
接口类-作为方法的参数及返回值
接口作为形参和返回值:
1.方法的形参是接口名,其实需要的是该接口的实现类对象
2.方法的返回值是接口名,其实返回的是该接口的实现类对象
作为形参:
publicinterfaceLove { publicabstractvoidshow(); } publicclassLoveDemo { //接口作为参数publicvoidmethod(Lovelove){ love.show(); } } //子类实现接口publicclassLoveImplimplementsLove { publicvoidshow() { System.out.println("爱一燕"); } } //测试publicclassLoveTest { publicstaticvoidmain(String[] args) { LoveDemold=newLoveDemo(); //需要对接口的参数进行实现化,多态的方法Lovelove=newLoveImpl(); //参数需要的是一个接口ld.method(love); } }
作为返回值:
publicinterfaceLove { publicabstractvoidshow(); } publicclassLoveDemo { //接口作为返回值publicLovegetLove(){ // 接口不能直接返回,需要实例化,多态的方式// Love love = new LoveImpl();// return love;returnnewLoveImpl(); } } //子类实现接口publicclassLoveImplimplementsLove { publicvoidshow() { System.out.println("爱一燕"); } } //测试publicclassLoveTest { publicstaticvoidmain(String[] args) { LoveDemold=newLoveDemo(); Lovelove=ld.getLove(); love.show(); } }