对于引用实现接口的类的对象
来源:互联网 发布:轻音乐软件 编辑:程序博客网 时间:2024/05/29 16:00
原文地址:通过接口类型变量引用实现接口的类的对象来实现作者:GOGO
接口的灵活性就在于“规定一个类必须做什么,而不管你如何做”。我们可以定义一个接口类型的引用变量来引用实现接口的类的实例,当这个引用调用方法时,它会根据实际引用的类的实例来判断具体调用哪个方法,这和上述的超类对象引用访问子类对象的机制相似。
举例说明:
//定义接口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在利用接口变量调用其实现类的对象的方法时,该方法必须已经在接口中被声明,而且在接口的实现类中该实现方法的类型和参数必须与接口中所定义的精确匹配。
举例说明:
//定义接口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在利用接口变量调用其实现类的对象的方法时,该方法必须已经在接口中被声明,而且在接口的实现类中该实现方法的类型和参数必须与接口中所定义的精确匹配。
0 0
- 对于引用实现接口的类的对象
- 接口引用指向实现类的对象
- 接口引用指向实现类的对象
- Java关于接口引用实现该接口类的对象
- Java多态和实现接口的类的对象赋值给接口引用的方法
- 对于父类引用指向子类对象的一些看法
- 关于接口对象直接引用实现类的对象的小结
- 实例化一个子类对象赋给父类对象引用或一个实现了接口的类的对象赋给接口的引用的好处
- C++实现对象和接口的弱引用
- Java初学习 - 多态和实现接口的类的对象赋值给接口引用的方法
- List<?> list= new ArrayList<?>为什么这样写 接口引用指向实现类的对象
- Java中对于对象的强引用、软引用、弱引用以及虚引用的区别
- 第12条 对于所有对象都通用的方法——考虑实现Comparable接口
- Effective Java 对于所有对象都通用的方法 12.考虑实现Comparable(可以比较)接口
- 对于Array的引用
- 引用对象接口时的注意点
- 对于接口的学习
- 对于 基类引用指向导出类对象 情况的理解
- C查找算法——二分查找
- IBM服务器代理商创业之路①
- 模拟Log4j输出信息
- hdu1284-钱币兑换问题(简单dp)
- gdb调试list 、vector等容器
- 对于引用实现接口的类的对象
- mfc 打开指定文档
- gdb调试错误:No symbol table is loaded. Use the "file" command.
- quagga实现 isis路由(2)
- QT界面,按钮,Label背景图片设置方法
- zoj 3885 The Exchange of Items 最小费用最大流
- BZOJ1050
- python 之 utf-8编码的秘密
- 离线语音听写