当参数类型为类名,抽象类名,接口名的时候
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方法,其中传入具体实现的类的对象
}
}
标签:Java,fun2,void,数据类型,class,面向对象,Student,new,public
From: https://www.cnblogs.com/ndmtzwdx/p/18434485