当前位置: 技术问答>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中的方法内容一定为空吗?
谢谢。
这样写的目的是什么?a的类型肯定是A,但它拥有哪些A、B的哪些变量和函数?
还有,interface中的方法内容一定为空吗?
谢谢。
|
有这么一个例子
InputStream is=new FileInputStream("xxx.xxx");
我想这个就是你说的 A a=new B();吧
因为InputStream是抽象的类,而FileInputStream是它的子类,我们不能直接创建InputStream类的实例,但可以创建其子类的实例,而且其子类的类型是InputStream,nterface中的方法不一定全为空
InputStream is=new FileInputStream("xxx.xxx");
我想这个就是你说的 A a=new B();吧
因为InputStream是抽象的类,而FileInputStream是它的子类,我们不能直接创建InputStream类的实例,但可以创建其子类的实例,而且其子类的类型是InputStream,nterface中的方法不一定全为空
|
对,造型问题,
interface中的方法一定是不能有方法体的。
interface中的方法一定是不能有方法体的。
|
这样写的目的是不能确定把a定义称B,还是C(B,C都是A的子类,满足B条件是声定义B,满足C条件是定义成C)
interface是接口,只有函数声明,没有函数的实现
interface是接口,只有函数声明,没有函数的实现
|
接口中的方法一定得没有方法体。
如:Collection.sort(...);其中,Collection是个接口吧,但在这里却直接调用接口的方法sort,怎么回事啊?-------------建议举一个准确的,不要随手写一个。
如:Collection.sort(...);其中,Collection是个接口吧,但在这里却直接调用接口的方法sort,怎么回事啊?-------------建议举一个准确的,不要随手写一个。
|
interface是个接口,接口中的方法体不一定为空!
例如可以在里面申明常量啊!
呵呵!(这样就不为空了啊!)
但是,它永远不能有实例字段!
接口不是类,而是对符合接口要求的类的一种规范啊!
对啊!
Collection接口规定,在这个接口中一定要个方法sort(),一旦你实现了这个接口的话,这个方法你也实现了啊!
当然可以调用的啦!
呵呵!
例如可以在里面申明常量啊!
呵呵!(这样就不为空了啊!)
但是,它永远不能有实例字段!
接口不是类,而是对符合接口要求的类的一种规范啊!
对啊!
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 );
这样就隐藏了所有画图的实现过程
所有这些都来源于 三条腿的狗也是狗
这是设计模式问题
举个例子:
一个项目中,要实现一个方法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() 去看看
我猜你这个问题是指Collections不是Collection吧
Collections有一个方法叫sort() 去看看