CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Java >  J2SE / 基础类

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

楼主jakarta(长风小侠)2002-11-08 15:00:36 在 Java / J2SE / 基础类 提问

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

1 楼binriyue(无)回复于 2002-11-08 15:10:24 得分 10

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

2 楼sgr_kk(丝瓜)回复于 2002-11-08 15:13:07 得分 10

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

3 楼beyond_xiruo(CorruptionException)回复于 2002-11-08 15:14:50 得分 20

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

4 楼jakarta(长风小侠)回复于 2002-11-08 15:41:15 得分 0

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

5 楼biti_9512207(波波斯基)回复于 2002-11-08 15:47:31 得分 0

我想这种问题是解释不清的,需要意会Top

6 楼fastmask(我心烦)回复于 2002-11-08 15:50:43 得分 0

Collection的句柄指向的是一个他的实现类的句柄,故此他的sort方法是已经被实现了的。这个句柄肯定不是用new   Collection()来创建的。Top

7 楼qxjavajava(射手座 =--->静静看那流光飞舞)回复于 2002-11-08 15:59:32 得分 10

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

8 楼yongwolf(大梦方觉醒)回复于 2002-11-08 16:02:37 得分 10

interface是个接口,接口中的方法体不一定为空!  
  例如可以在里面申明常量啊!  
  呵呵!(这样就不为空了啊!)  
   
  但是,它永远不能有实例字段!  
   
  接口不是类,而是对符合接口要求的类的一种规范啊!  
  对啊!  
  Collection接口规定,在这个接口中一定要个方法sort(),一旦你实现了这个接口的话,这个方法你也实现了啊!  
  当然可以调用的啦!  
  呵呵!  
   
  Top

9 楼mefaintII(我晕)回复于 2002-11-08 16:42:46 得分 0

>例如可以在里面申明常量啊!  
   
  真的可以么?你试试看  
  只能设定形式参数吧Top

10 楼jakarta(长风小侠)回复于 2002-11-08 17:01:17 得分 0

不好意思,原来是这样的:  
  Collections是个class,自然可以使用方法sort,如:Collections.sort(entry_list,   new   AlphaComparator());  
  而Collection才是个接口。  
  不过,对于第一个问题,我还是想问:B   b   =   new   B();和A   a   =   new   A();到底有何区别?Top

11 楼jakarta(长风小侠)回复于 2002-11-08 17:10:18 得分 0

SL275:  
  Note   –   An   interface   can   also   declare   constants:   public   static   finalTop

12 楼Javatomchen()回复于 2002-11-08 17:17:47 得分 10

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

13 楼Javatomchen()回复于 2002-11-08 17:20:03 得分 0

倒数第三行,写错了,应该是  
  A.drawFigure(   new   DrawSquare()   );Top

14 楼Javatomchen()回复于 2002-11-08 17:21:40 得分 10

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

15 楼lifejoy(山外青衫)回复于 2002-11-08 18:21:42 得分 10

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

16 楼smallfox(小狐狸)回复于 2002-11-08 20:07:48 得分 0

设计模式比较难理解,初学java也不用考虑那么复杂,  
   
  如A   有两方法   m1   m2  
  B重载了其中一个m2  
   
  那么a.m1()   执行A.m1,   a.m2()执行B.m2()  
   
  我觉得这是最实际的解释  
   
  interface只能有常数和接口,实现时必须实现所有接口才行Top

17 楼smallfox(小狐狸)回复于 2002-11-08 20:19:58 得分 10

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

18 楼jakarta(长风小侠)回复于 2002-11-09 14:18:58 得分 0

多谢各位。Top

相关问题

  • b/s 怎么解释呀?
  • b/s 怎么解释呀? 最好给出完整的解释,或者哪有类似的书籍也可以呀
  • ==============ClassA b=new ClassB()谁能解释!=================
  • 帮忙解释一下这一句:a[b] = b = 0;
  • 请解释以下Str.SubString(a,b)中参数a,b的含义
  • 怎么解释他们?
  • 码距怎么解释??
  • 这个"."怎么解释?
  • 这个怎么解释?
  • 那位能给小弟解释解释这几个东东 刚接触B/S!!

关键词

  • 接口
  • 函数
  • 调用
  • 方法
  • 子类
  • drawsquare
  • collections
  • 句柄
  • 实现
  • sort

得分解答快速导航

  • 帖主:jakarta
  • binriyue
  • sgr_kk
  • beyond_xiruo
  • qxjavajava
  • yongwolf
  • Javatomchen
  • Javatomchen
  • lifejoy
  • smallfox

相关链接

  • CSDN Java频道
  • Java类图书
  • Java类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo