【java】【多态】的一个小例子

  首先要了解什么是多态?

:在面向对象语言中,接口的多种不同的实现方式即为多态。具体来说,就是不同子类作为参数使用同一父类的方法
时的实现方法是不同的。

  多态的表现形式有哪些?

1.重载overload,是发生在同一类里的。

标识一个函数除了函数名外,还有函数的参数(个数和类型),也就是说,一个类中可以有两个或更多的函数,叫同一个名字而他们的参数不同。简单来说

就是对重名函数进行重写,往往根据参数的不同来区分。

2、覆盖override,是发生在父类和子类之间的。这种关系要求必须有extends(继承)。

  实现多态的技术是什么?

动态绑定。是指在执行期间判断引用对象的类型,根据其实际的类型调用其相应的方法。

 多态存在的必要条件是什么?

1.要有继承

2.要有重写override

3.父类引用指向子类对象(常用instanceof来判断)

 使用多态有哪些好处?

1.可替换性  2.可扩充性 3.接口性 4.灵活性  5.简化性


下面给一个自己写的多态override的小例子:

class A extends Main{
	public String show(A obj)
	{
		System.out.println("调用了A的show方法");
		return "A";
	}
}
class B extends Main{
	public String show(B obj)
	{
		System.out.println("调用了B的show方法");
	return "B";
	}
}
class C extends A{
	public String show(C obj)
	{
		System.out.println("调用了C的show方法");
		return "C";
	}
}
public class Main{
	public static void main(String[] args)
	{
		Main u = new Main();
		A a = new A();
		B b = new B();
		C c = new C();
		System.out.println(u.show(c));//改变c的值为a,b,看结果
	}
	public String show(Main main)
	{
		if(main instanceof A)
		{
			System.out.println("以A类为对象调用show方法");
		}
		if(main instanceof B)
		{
			System.out.println("以B类为对象调用show方法");
		}
		if(main instanceof C)
		{
			System.out.println("以C类为对象调用show方法");
		}
		return "main";
	}
	
}
其中A,B类是Main类的子类,C是A的子类,改变
(u.show(c))
的值。

特别的,如果Main引用指向C对象,那么它同时也指向C对象的父类:A对象。

所以结果是这样的:

以A类为对象调用show方法
以C类为对象调用show方法
main


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值