方法的形式参数问题

方法的形式参数问题

方法的形式参数问题: 只研究引用类型

方法形式参数:

​	具体类:调用该方法,此时实际参数需要的是当当前类的对象!

​	抽象类:调用该方法,此时实际参数需要的是当前抽象类的子类对象!

​	接口类型:调用该方法,此时实际参数需要的是接口的子实现类对象!
 

​	开发中:方法形式参数是具体类以及接口情况居多的!

具体类:调用该方法,此时实际参数需要的是当当前类的对象!

package com.qf.args_01;

/**
 * 方法的形式参数问题: 只研究引用类型
 *
 *              方法形式参数:
 *                      具体类:调用该方法,此时实际参数需要的是当当前类的对象!
 *                      抽象类
 *                      接口
 *
 */
class Student{
    public void studyJavaEE(){
        System.out.println("正在学习JavaEE之JavaSE") ;
    }
}
//定义一个StudentDemo类
class StudentDemo{

    public void show(Student s){//方法的形式参数是一个学生类型
        s.studyJavaEE() ;
    }
}

//测试类
public class ArgsDemo1 {
    public static void main(String[] args) {
        //访问StudentDemo类中的show方法
        StudentDemo sd = new StudentDemo() ;
        Student student = new Student() ;
        sd.show(student) ;
        System.out.println("---------------------------------------") ;
        //另一种方式:匿名对象
        new StudentDemo().show(new Student());

    }
}

抽象类:调用该方法,此时实际参数需要的是当前抽象类的子类对象!

package com.qf.args_01;

/**
 * 方法的形式参数问题: 只研究引用类型
 *
 *              方法形式参数:
 *                      具体类:调用该方法,此时实际参数需要的是当当前类的对象!
 *                      抽象类:调用该方法,此时实际参数需要的是当前抽象类的子类对象!
 *                      接口
 *
 */
//定义一个Person类
abstract  class Person{
    /*public  void work(){
        System.out.println("人都需要工作");
    }*/

    public abstract  void work() ;
}
//定义一个PersonDemo类
class PersonDemo{
    public void function(Person p){//方法的形式参数是引用类型--抽象类,抽象类不能new,需要传递抽象类的子类对象!
        p.work() ;
    }
}

//定义抽象类的子类(具体类)
class Worker extends  Person{

    @Override
    public void work() {
        System.out.println("爱工作,爱Java,爱高圆圆!");
    }
}
//测试类
public class ArgsDemo2 {
    public static void main(String[] args) {
        //访问PersonDemo类中的function方法?
        PersonDemo pd  = new PersonDemo() ;
        //Person p = new Person() ;抽象类不能实例化(不能创建对象)
        Person person = new Worker() ;
        pd.function(person) ;
        System.out.println("----------------------------------") ;
        new PersonDemo().function(new Worker());
    }
}

接口类型:调用该方法,此时实际参数需要的是接口的子实现类对象!

package com.qf.args_01;

/**
 * 方法的形式参数问题: 只研究引用类型
 *
 *              方法形式参数:
 *                      具体类:调用该方法,此时实际参数需要的是当当前类的对象!
 *                      抽象类:调用该方法,此时实际参数需要的是当前抽象类的子类对象!
 *                      接口类型:调用该方法,此时实际参数需要的是接口的子实现类对象!
 *
 *                开发中:方法形式参数是具体类以及接口情况居多的!
 */
//定义一个接口
interface Love{
    public abstract void love() ;
}
//定义一个类:LoveDemo
class LoveDemo{
    public void method(Love love) {//方法的形式参数是一个接口? 接口不能new,需要接口的子实现类对象
        love.love();
    }
}
//需要有定义接口的子实现类,实现Love接口
class LoveImpl implements  Love{

    @Override
    public void love() {
        System.out.println("love Java!");
    }
}


//测试类
public class ArgsDemo3 {
    public static void main(String[] args) {
        //要访问LoveDemo类中的method方法?
        LoveDemo ld = new LoveDemo() ;
       // Love l = new Love() ;//接口不能实例化
       // ld.method(l);

        //接口多态:接口名指向子实现类
        Love l = new LoveImpl() ;
        ld.method(l);
        System.out.println("--------------------------");
        new LoveDemo().method(new LoveImpl()) ;
    }
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值