参数为引用数据类型详解

本文详细阐述了在Java中将类、抽象类和接口作为方法参数的使用场景和特点,包括类对象的匿名使用,抽象类子类对象的传递以及接口实现类对象的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

类作为参数时

类:在调用方法时,传入相应类的对象(匿名类)

package org.wdzl.unit04;

/**
 * 形式参数是引用数据类型问题
 *     1、类:在调用方法时,传入相应类的对象(匿名类)
 *     2、抽象类
 *     3、接口
 */
public class ArgsDemo {
    public static void main(String[] args) {
        StudentDemo studentDemo = new StudentDemo();
        //第一种创建对象
        Student student = new Student();
        studentDemo.function(student);
        //第二中匿名对象
        studentDemo.function(new Student());
    }
}
class Student{
    public void study(){
        System.out.println("Good Study!!!");
    }
}
class StudentDemo{
    public void function(Student student){
        student.study();
    }
}

抽象类作为参数时

抽象类:在调用方法时,传入抽象类子类对象。

package org.wdzl.unit04;
/**
 * 形式参数是引用数据类型问题
 *     1、类:在调用方法时,传入相应类的对象(匿名类)
 *     2、抽象类:在调用方法时,传入抽象类子类对象。
 *     3、接口
 */
public class ArgsDemo1 {
    public static void main(String[] args) {
        PersonDemo personDemo = new PersonDemo();
        //personDemo.function();//编译时异常
        //抽象类不能被实例化对象,其次抽象类中的方法也没有方法体,即便可以调用也没有任何意义。
        Person person = new Student1();
        personDemo.function(person);
    }
}
abstract class Person{
    public abstract void study();
}
class PersonDemo{
    public void function(Person person){//Person p = new Student1();
        person.study();
    }
}
class Student1 extends Person{

    @Override
    public void study() {
        System.out.println("Good  Study!!!");
    }
}

接口作为参数时

接口:在调用方法时,传入实现类的对象。

package org.wdzl.unit04;
/**
 * 形式参数是引用数据类型问题
 *     1、类:在调用方法时,传入相应类的对象(匿名类)
 *     2、抽象类:在调用方法时,传入抽象类子类对象。
 *     3、接口:在调用方法时,传入实现类的对象。
 */
public class ArgsDemo3 {
    public static void main(String[] args) {
        Teacher teacher = new Teacher();
//        teacher.method();//因为接口中的方法都是抽象方法,即使调用了也没有任何意义
        ExtendMethod extendMethod = new TeacherDemo();
        teacher.method(extendMethod);
    }
}
interface ExtendMethod{
    public abstract void cook();
}
class TeacherDemo implements ExtendMethod{

    @Override
    public void cook() {
        System.out.println("做饭");
    }
}
class Teacher {
    public void method(ExtendMethod extendMethod){//ExtendMethod e = new Teacher();
        extendMethod.cook();
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值