栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

在java中将对象转换为接口?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在java中将对象转换为接口?

MyInterface myObj = new Obj(); MyInterface mySec = new Sec();

对于这是合法的,都

Obj
Sec
将要成为执行者
MyInterface
。这两个对象之间的区别在于它们 如何
提供该实现。
Obj
并且
Sec
可以做两个非常不同或非常相似的事情,但是它们的共同点是它们会遵守您可以依赖的合同。考虑你有办法

public void doSomethingWith(MyInterface thing) {     thing.frob();}

可以将每个对象

myObj
mySec
传递到此方法中,然后该方法可以使用该对象的
frob
方法(假设frob是接口声明的一部分)。这是 解放
。通过对接口而不是对实现进行编程,这使您可以做非常强大的事情。例如,您可以扩展类的功能,而无需更改这些类中的代码行,您只需传递依赖项的不同实现即可。你是不依赖于,或
再加上 ,该方法内的任何一个implentation
doSomethingWith


但我也读到,如果我们将对象myObj声明为MyInterface,则myObj将无法使用自己的方法(来自Obj类),是否正确

在内部,的实例

Obj
将继续拥有对该
Obj
API的完全访问权限。
myObj
仍然是
Obj
,它将始终能够使用其自己的实现详细信息。

public interface MyInterface {    void frob();}public class Obj implements MyInterface {    public void frob() {        doFrobbing();    }    private void doFrobbing() {        System.out.println("frobbing");    }    public static void main(String[] args) {        MyInterface myObj = new Obj();        myObj.frob(); // still internally calls doFrobbing()        ((Obj)myObj).doFrobbing(); // visible only via class reference    }}

的实例

Obj
仍将是的实例
Obj
,并且这些实例仍将能够使用
doFrobbing
。在外部,通过接口引用 使用 这些实例的人员将只能访问接口方法。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/431441.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号