加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 当我可以通过引用子类访问所有方法时,为什么要引用基类

发布时间:2020-12-15 04:53:45 所属栏目:Java 来源:网络整理
导读:我正在学习 java概念. 我对 java继承概念有疑问. 在继承中,我们可以将子类实例分配给基类引用 并且我们只能访问基类功能. 我们可以将继承层次结构中的任何子类实例分配给基类引用.对于分配给特定基类引用的实例类型,我们只能访问基类函数,但我没有发现任何区
我正在学习 java概念.
我对 java继承概念有疑问.
在继承中,我们可以将子类实例分配给基类引用
并且我们只能访问基类功能.
我们可以将继承层次结构中的任何子类实例分配给基类引用.对于分配给特定基类引用的实例类型,我们只能访问基类函数,但我没有发现任何区别.

任何人都可以给我实际的概念
为什么我们必须将子类实例分配给基类引用?
有什么需要这样做?
相反,我们可以从子类引用只知道访问那些基类函数.

通过考虑层次结构中的特定基类和许多子类来解释.

解决方法

您可能希望这样做的原因是创建更强大的设计.以 Java中的Collections Framework为例.你有一个List接口,然后你有两个实现,ArrayList和LinkedList.

您可以编写程序以专门使用LinkedList或ArrayList.但是,您的程序依赖于这些特定的实现.

如果你编写的程序依赖于超类型List,那么你的程序可以适用于任何一个List实现.假设您想编写一个对List执行某些操作的方法,并且您写了这个:

public void doSomething(ArrayList a){}

此方法只能使用ArrayList调用,而不能使用LinkedList调用.假设你想用LinkedList做同样的事情?那你复制你的代码吗?没有.

public void doSomething(List l){}

将能够接受任何类型的List.

这背后的原理是接口的程序而不是实现.也就是说,List定义了ALL列表的功能.

这种用法有很多例子.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读