对于引用实现接口的类的对象
2015-08-21 14:54
232 查看
原文地址:通过接口类型变量引用实现接口的类的对象来实现作者:GOGO
接口的灵活性就在于“规定一个类必须做什么,而不管你如何做”。我们可以定义一个接口类型的引用变量来引用实现接口的类的实例,当这个引用调用方法时,它会根据实际引用的类的实例来判断具体调用哪个方法,这和上述的超类对象引用访问子类对象的机制相似。
举例说明:
输出结果为:
This is B
This is C
上例中类B和类C是实现接口InterA的两个类,分别实现了接口的方法fun(),通过将类B和类C的实例赋给接口引用a而实现了方法在运行时的动态绑定,充分利用了“一个接口,多个方法”展示了Java的动态多态性。
需要注意的一点是:Java在利用接口变量调用其实现类的对象的方法时,该方法必须已经在接口中被声明,而且在接口的实现类中该实现方法的类型和参数必须与接口中所定义的精确匹配。
接口的灵活性就在于“规定一个类必须做什么,而不管你如何做”。我们可以定义一个接口类型的引用变量来引用实现接口的类的实例,当这个引用调用方法时,它会根据实际引用的类的实例来判断具体调用哪个方法,这和上述的超类对象引用访问子类对象的机制相似。
举例说明:
//定义接口InterA interface InterA { void fun(); } //实现接口InterA的类B class B implements InterA { public void fun() { System.out.println(“This is B”); } } //实现接口InterA的类C class C implements InterA { public void fun() { System.out.println(“This is C”); } } class Test { public static void main(String[] args) { InterA a; a= new B(); a.fun(); a = new C(); a.fun(); } } |
This is B
This is C
上例中类B和类C是实现接口InterA的两个类,分别实现了接口的方法fun(),通过将类B和类C的实例赋给接口引用a而实现了方法在运行时的动态绑定,充分利用了“一个接口,多个方法”展示了Java的动态多态性。
需要注意的一点是:Java在利用接口变量调用其实现类的对象的方法时,该方法必须已经在接口中被声明,而且在接口的实现类中该实现方法的类型和参数必须与接口中所定义的精确匹配。
相关文章推荐
- zoj 3885 The Exchange of Items 最小费用最大流
- 实例讲解访问者模式(Visitor Pattern)
- gdb调试list 、vector等容器
- QT界面,按钮,Label背景图片设置方法
- java 动态代理机制分析及扩展
- 【.Net码农】ASP.NET数据控件的自定义模板
- gdb调试错误:No symbol table is loaded. Use the "file" command.
- 一个、说到所有的扩展指标
- zoj 3885 The Exchange of Items 最小费用最大流
- Android学习系列之(三)Activity的基本使用
- C查找算法——二分查找
- 模拟Log4j输出信息
- Hadoop基础之---配置
- poj1743(后缀数组)
- hdu2955-Robberies(01背包 概率 )
- ViewPager滑动监听
- CATransform3D-Cube
- 方法体的构成_this关键字
- Office 365 IT Professional——批量用户创建
- centos linux系统下搭建git服务器