研究的方法的返回值引用类型

研究的方法的返回值引用类型:

研究的方法的返回值引用类型:

	方法的返回值如果是引用类型:

	具体类:需要返回该具体类的对象!

	抽象类:需要返回该抽象类的子类对象!

	接口:需要返回接口子实现类对象!

具体类:需要返回该具体类的对象!

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();
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值