研究的方法的返回值引用类型:
研究的方法的返回值引用类型:
方法的返回值如果是引用类型:
具体类:需要返回该具体类的对象!
抽象类:需要返回该抽象类的子类对象!
接口:需要返回接口子实现类对象!
具体类:需要返回该具体类的对象!
package com.qf.return_02;
/**
* 方法的返回值问题:
* 要么基本类型/引用数据类型
* 基本类型:简单,要什么类型,使用指定的类型接收即可!
*
*
* 研究的方法的返回值引用类型:
* 方法的返回值如果是引用类型:
* 具体类:需要返回该具体类的对象!
* 抽象类:
* 接口:
*/
class Demo{
//对两个数据求和
public int sum(int a,int b){
return a+ b;
}
}
//定义学生类
class Student{
public void study(){
System.out.println("好好学习,天天向上!");
}
}
//StudentDemo类
class StudentDemo{
public Student show(){
//?补全代码
//return Student ; 错误
//方式1:
// Student s = new Student() ;
//return s ;
//方式2:匿名对象
return new Student() ;
}
}
//测试类
public class ReturnDemo1 {
public static void main(String[] args) {
Demo d = new Demo() ;
int result = d.sum(10, 15);
System.out.println(result);
System.out.println("-------------------------");
//访问StudentDemo类中的方法
StudentDemo sd = new StudentDemo() ;
Student student = sd.show(); //show方法就是new Student()
student.study();
}
}
抽象类:需要返回该抽象类的子类对象!
package com.qf.return_02;
/**
* 研究的方法的返回值引用类型:
* 方法的返回值如果是引用类型:
* 具体类:需要返回该具体类的对象!
* 抽象类:需要返回该抽象类的子类对象!
* 接口:
*/
//定义一个Person类
abstract class Person{
public abstract void work() ;
}
//PersonDemo类
class PersonDemo{
public Person function(){//方法的返回值是一个抽象类
//?
// return new Person() ; 抽象类不能实例化
//方式1:抽象类多态
//Person p = new Programmer() ;
//return p;
//方式2:直接匿名对象 (创建子类对象)
return new Programmer() ;
}
}
//定义一个类,继承Person
//程序员
class Programmer extends Person{
@Override
public void work() {
System.out.println("程序员日日夜夜敲代码!");
}
}
//测试类
public class ReturnDemo2 {
public static void main(String[] args) {
//访问PersonDemo类的function方法
PersonDemo pd = new PersonDemo() ;
Person person = pd.function(); //funciton方法 本质--->创建了子类对象
person.work();
}
}
接口:需要返回接口子实现类对象!
package com.qf.return_02;
import sun.util.resources.ms.CalendarData_ms_MY;
/**
* 研究的方法的返回值引用类型:
* 方法的返回值如果是引用类型:
* 具体类:需要返回该具体类的对象!
* 抽象类:需要返回该抽象类的子类对象!
* 接口:需要返回接口子实现类对象!
*/
//定义一个接口
interface Mary{ //结婚的接口
public abstract void mary() ;
}
//定义一个MaryDemo
class MaryDemo{
public Mary method(){
//?
//return new Mary() ;//接口不能new
//方式1:
//Mary mary = new MaryImpl() ;
// return mary ;
//方式2:
return new MaryImpl() ;
}
}
//需要定义接口的子实现类
class MaryImpl implements Mary{
@Override
public void mary() {
System.out.println("要结婚了,很开心...");
}
}
//测试类
public class ReturnDemo3 {
public static void main(String[] args) {
//需求:访问MaryDemo类中的method方法?
MaryDemo md = new MaryDemo() ;
Mary mary = md.method();
mary.mary();
System.out.println("--------------------------");
Mary mary2 = new MaryDemo().method();
mary2.mary();
}
}