JAVA子类作为实参父类作为形参,JAVA——多态的应用

多态的两种实现方式

1   使用父类作为方法形参

2   使用父类作为方法返回值

(注: 当作为参数的父类是普通类或者抽象类时,构成继承多态;当作为参数的父类是一个接口时,构成接口多态)

1、使用父类方法作为形参( 形式参数的类型:  ①基本类型     ②引用类型  )

普通类形参:   当一个形参希望我们传入的是一个普通类时,我们实际上传入的是该类的对象/匿名对象

抽象类形参:   当一个形参希望我们传入的是一个抽象类时,我们实际上传入的是该类的子类对象或子类匿名对象

接 口 形 参 :   当一个形参希望我们传入的是一个接口时,我们实际上传入的是该类的实现类对象或实现类匿名对象

注          意  :     当一个方法的形参是引用类型的时候,需做非空判断,以免出现类型转换异常

2、 使用父类方法作为返回值( 返回值的类型:  ①基本类型     ②引用类型  )

普通类: 当一个方法的返回值是一个普通的类时,实际上返回的是该类的对象,我们可以使用该类的对象接收

抽象类: 当一个方法的返回值是一个抽象类时,实际上返回的是该抽象类的子类对象,我们可以使用该抽象类接收

接    口: 当一个方法的返回值是一个接口时,实际上返回的是该接口的实现类对象,我们可以使用接口接收

(注:当方法的返回值类型是引用类型的时候,可以使用链式调用)

3、 代码演示

public class Polymorphism {

public static void main(String[] args) {

}

}

interface Ivehicle {

public abstract void run();

public abstract void show();

}

abstract class AbsTool {

abstract void absmethod();

}

class Car extends AbsTool implements Ivehicle {

public void absmethod() {

System.out.println("实现父类抽象方法");

}

public void run() {

System.out.println("实现接口的run方法");

}

public void show() {

System.out.println("实现接口的show方法");

}

//抽象类AbsTool作为形参,传入的实参应是其(匿名)子类Car的(匿名)对象:new car();

public void method1(AbsTool s) {

System.out.println("使用抽象类作为形参");

}

//接口Ivehicle作为形参,传入的实参应是其实现类Car的(匿名)对象:new car();

public void method2(Ivehicle s) {

System.out.println("使用接口作为形参");

}

//抽象类AbsTool作为返回值类型,返回的应是其子类Car的(匿名)对象:new car();

public AbsTool method3() {

System.out.println("返回AbsTool类的子类对象");

return new Car();

}

//接口Ivehicle作为返回值类型,返回的应是其实现类Car的(匿名)对象:new car();

public void method4(Ivehicle s) {

System.out.println("使用接口作为形参");

}

}

class Bmw extends Car {

//普通类Car作为形参,那么应传入的实参是该普通类Car的对象,例如:new car();

public void method5(Car s) {

}

//普通类Car作为返回值类型,返回应是该普通类Car的对象,例如:new car();

public Car method6() {

return new Car();

}

}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值