Java中面向对象将引用数据类型作为参数类型

当参数类型为类名,抽象类名,接口名的时候

1.当一个类名作为参数类型在一个方法的时候
class Student{
    public void fun1(){
        System.out.println("我是父亲");
    }
}
class StudentDemo1{
    public void fun2(Student student){  //当调用到这个方法时相当于:Student student =new Student()
        student.fun1();
    }
}

public class Demo1 {
    public static void main(String[] args) {
        StudentDemo1 student = new StudentDemo1(); //创建一个StudentDemo对象
        student.fun2(new Student());               //用student对象去调用该类里面的方法,但是里面的参数要传一个对象进去
    }
}
//其中调用fun2就相当于Student Student = new Student()

2.当一个抽象类名作为参数类型时:我们需要传入一个具体的子类的对象,并且该子类是继承了该抽象类

//当一个抽象类名作为参数类型的时候
abstract class Student1{
    public abstract void fun2();
}
class StudentZi extends Student1{
    public void fun2(){
        System.out.println("我是一个子类");
    }
}
class StudentDemo2{
    public void fun(Student1 student1){  //当调用到这时相当于:Student1 student1 =new StudentZi()
        student1.fun2();
    }
}
public class Demo1 {
    public static void main(String[] args) {
        StudentDemo2 studentDemo2 = new StudentDemo2(); //创建一个StudentDemo2对象
        studentDemo2.fun(new StudentZi()); //用该对象调用fun方法,其中传入具体子类继承父类的对象
    
    }
}

3.当接口名作为一个参数类型的时候:我们需要传入一个具体实现接口的类的对象

//当一个接口名作为参数类型的时候
interface Inter{
    public abstract void fun2();
}
class StudentInter implements Inter{
    public void fun2(){
        System.out.println("我是大富翁");
    }
}
class StudentDemo3{
    public void fun4(Inter inter){  //当调用这个方法时相当于:Inter inter=new StudentInter
        inter.fun2();
    }
}

public class Demo1 {
    public static void main(String[] args) {
     
        StudentDemo3 studentDemo3 = new StudentDemo3(); //创建一个视图studentDemo3对象
        studentDemo3.fun4(new StudentInter());//用该对象调用fun4方法,其中传入具体实现的类的对象
    }
}

posted @ 2024-09-26 21:49  你的镁偷走了我的锌  阅读(75)  评论(0)    收藏  举报