JAVA——多态应用

多态的两种实现方式

1 使用父类作为方法参数类型
2 使用父类作为方法返回值类型
(注: 当作为参数的父类是普通类或者抽象类时,构成继承多态; 当作为参数的父类是一个接口时,构成接口多态)

1、使用父类作为方法参数类型

                 ( 形式参数的类型:  ①基本类型     ②引用类型  )

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

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

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

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

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

( 返回值的类型: ①基本类型 ②引用类型 )
普通类: 当一个方法的返回值是一个普通的类时,实际上返回的是该类的对象,我们可以使用该类的对象接收

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

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

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

3、 代码演示


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();

	}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值