当前位置:  技术问答>java相关

“A a = new B();”怎么解释?

    来源: 互联网  发布时间:2015-10-27

    本文导语:  前提:A是B的父类。 这样写的目的是什么?a的类型肯定是A,但它拥有哪些A、B的哪些变量和函数? 还有,interface中的方法内容一定为空吗? 谢谢。 | 有这么一个例子 InputStream is=new FileInputSt...

前提:A是B的父类。
这样写的目的是什么?a的类型肯定是A,但它拥有哪些A、B的哪些变量和函数?
还有,interface中的方法内容一定为空吗?
谢谢。

|
有这么一个例子
InputStream is=new FileInputStream("xxx.xxx");
我想这个就是你说的 A a=new B();吧
因为InputStream是抽象的类,而FileInputStream是它的子类,我们不能直接创建InputStream类的实例,但可以创建其子类的实例,而且其子类的类型是InputStream,nterface中的方法不一定全为空

|
对,造型问题,
interface中的方法一定是不能有方法体的。

|
这样写的目的是不能确定把a定义称B,还是C(B,C都是A的子类,满足B条件是声定义B,满足C条件是定义成C)
interface是接口,只有函数声明,没有函数的实现

|
接口中的方法一定得没有方法体。
如:Collection.sort(...);其中,Collection是个接口吧,但在这里却直接调用接口的方法sort,怎么回事啊?-------------建议举一个准确的,不要随手写一个。

|
interface是个接口,接口中的方法体不一定为空!
例如可以在里面申明常量啊!
呵呵!(这样就不为空了啊!)

但是,它永远不能有实例字段!

接口不是类,而是对符合接口要求的类的一种规范啊!
对啊!
Collection接口规定,在这个接口中一定要个方法sort(),一旦你实现了这个接口的话,这个方法你也实现了啊!
当然可以调用的啦!
呵呵!


|
不出马不行了:
这是设计模式问题
举个例子:
一个项目中,要实现一个方法draw( Figure figure ) 供调用;
其中
class Figure
{
    public void draw(  )
    {
        
    }
}
调用模式 A.drawFigure( Figure figure ); 
估计要画的图形有n个,比如正方形,每个图形的画法都不同
看一个实现 
class DrawSquare  implements Figure{
    public void draw()
    {
       //
    }
}
可以这样调用 A.draw( new DrawSquare );
这样就隐藏了所有画图的实现过程
所有这些都来源于 三条腿的狗也是狗

|
调用的是子类的实现,而不是接口里的方法

|
多态性!面向对象的基本特性!

|
如果interface一定方法体一定为空的话,有些问题我想不明白,如:Collection.sort(...);其中,Collection是个接口吧,但在这里却直接调用接口的方法sort,怎么回事啊?


我猜你这个问题是指Collections不是Collection吧
Collections有一个方法叫sort() 去看看

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • java命名空间java.lang枚举thread.state的类成员方法: new定义及介绍
  • NOSQL iis7站长之家
  • java命名空间javax.print.attribute.standard类multipledocumenthandling的类成员方法: single_document_new_sheet定义及介绍
  • jb中entitybean的add new finder和add new select有什么不同
  • C++操作符(Operator)用法(new和重载)
  • 菜鸟问题(对象数组):对于clsA []=new claA[10];语句执行后是否已经拥有了类clsA的10个实例对象,还是要再for i=0 to 9对clsA[i]=new clsA一下?
  • c/c++中的内存分配 malloc 和 new介绍及相互之间的区别
  • 我是初学者,问一个比较傻的问题:既然JAVA是一种纯面向对象的语言,那么为什么int i=new int()或int i=new int(1)不能通过编译?谢谢。
  • CSS3 target-new 属性
  • PHP中new static()与new self()的区别异同分析
  • 有关new和delete的问题
  • Happy new Year!!!!!!!!!!!!!!!!
  • 若和知道一个对象被 new过?
  • Linux编程是否可以用new?
  • Button bn=new Button("OK");怎么会报错?
  • 请教各位关于 new
  • 关于new的疑惑..
  • 在new ImageIcon()中使用相对路径怎么没有用?
  • 如何得到自己被谁new了?
  • 新手提问 在线等待,为什么我的程序中 new 操作符出错?
  • 关于QT中的new和delete


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3