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

来源:互联网 发布:淘宝店铺优惠券平台 编辑:程序博客网 时间:2024/05/30 02:22

  首先要了解什么是多态?

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

  多态的表现形式有哪些?

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


0 0
原创粉丝点击