文选流氓 发表于 2003-2-5 12:10

1-1-4-17 抽象类的讨论

发信人: cattleluo (乖乖的倔小牛), 信区: Java      
标题: 关于IMAGE抽象类
发信站: BBS 水木清华站 (Thu May 31 14:48:03 2001)

IMAGE是一个抽象类
为什么会有 Image img;
这样的语句呢?
后来又有img=getImage(imgURL,imgname);
这样的语句可以使img指向一个图片
可是我把第一局改成 Image img=new Image()
就不行
这我可以理解,因为抽象类不能实例华
那么Image img到底是什么意思?
很着急,谢谢

--
发信人: lyman18 (我喜欢物理,谁当我的老师和朋友), 信区: Java      
标题: Re: 关于IMAGE抽象类

Image img;
就只是一个声明而已。
既然是抽象类,就不能直接实例化。
但是getImage(...)返回的一定是继承Image且实现了Image的抽象方法的后代类的实例。
所以...有什么问题?

发信人: ssky (孤独的人儿没人理), 信区: Java      
标题: Re: 关于IMAGE抽象类

我也不大明白的,很多   abstract类,不可以 new
但可以通过其他类的方法来得到


发信人: lyman18 (我喜欢物理,谁当我的老师和朋友), 信区: Java      
标题: Re: 关于IMAGE抽象类
发信站: BBS 水木清华站 (Thu May 31 15:07:20 2001)

再补充一句:
不要把Java的声明:
Image img;
和C++的混淆。
在C++中,这么一条语句既是声明也是实例化。
但在Java中。仅仅是声明,可理解为img是一个4字节
(安全)指针。且一定赋初值为NULL。
即使Image是抽象类语法语义上都没问题!
但C++中声明抽象类的实例是绝不允许的,理由就是上面说过的:声明和实例化被统一并存着。

【 在 ssky (孤独的人儿没人理) 的大作中提到: 】
: 我也不大明白的,很多   abstract类,不可以 new
: 但可以通过其他类的方法来得到


--

※ 来源:·BBS 水木清华站 smth.org·
发信人: cattleluo (乖乖的倔小牛), 信区: Java      
标题: Re: 关于IMAGE抽象类
发信站: BBS 水木清华站 (Thu May 31 15:08:35 2001)

声明什么呢?
我把代码全贴出来算了
public class ShowImg extends Appletimplements ImageObserver//使用ImageObs
erver接口
{
Image img;
public void init()
{
String imgname=getParameter("imagename");
URL imgURL=getDocumentBase();
img=getImage(imgURL,imgname);
}
public void paint(Graphics g)
{g.drawImage(img,0,0,this);}
}
没有对IMAGE类的继承啊

【 在 ssky (孤独的人儿没人理) 的大作中提到: 】
: 我也不大明白的,很多   abstract类,不可以 new
: 但可以通过其他类的方法来得到


--

※ 来源:·BBS 水木清华站 smth.org·
发信人: lyman18 (我喜欢物理,谁当我的老师和朋友), 信区: Java      
标题: Re: 关于IMAGE抽象类
发信站: BBS 水木清华站 (Thu May 31 15:13:25 2001)

建议你检查一下getImage(..)的代码。

--

※ 来源:·BBS 水木清华站 smth.org·
发信人: cattleluo (乖乖的倔小牛), 信区: Java      
标题: Re: 关于IMAGE抽象类
发信站: BBS 水木清华站 (Thu May 31 15:16:18 2001)

有什么问题吗?
这是一个例程,而且运行成功过阿
我看过帮助,getImage()方法只有一个参数
你是指这个马?
可是改为一个参数无法使用阿

【 在 lyman18 (我喜欢物理,谁当我的老师和朋友) 的大作中提到: 】
: 建议你检查一下getImage(..)的代码。


--

※ 来源:·BBS 水木清华站 smth.org·
发信人: lyman18 (我喜欢物理,谁当我的老师和朋友), 信区: Java      
标题: Re: 关于IMAGE抽象类
发信站: BBS 水木清华站 (Thu May 31 15:25:21 2001)

我已经说得十分清楚。可能你还没有理解。
这样把,我们通过各自得信箱直接讨论,直到最后
使你明白!我得到什么呢:(,辛苦一大把。
最后你将明白我说得其实非常准确!
【 在 cattleluo (乖乖的倔小牛) 的大作中提到: 】
: 有什么问题吗?
: 这是一个例程,而且运行成功过阿
: 我看过帮助,getImage()方法只有一个参数
: 你是指这个马?
: 可是改为一个参数无法使用阿


--

※ 来源:·BBS 水木清华站 smth.org·
发信人: kammi (蓝色森林), 信区: Java      
标题: Re: 关于IMAGE抽象类
发信站: BBS 水木清华站 (Thu May 31 15:36:36 2001)


【 在 cattleluo (乖乖的倔小牛) 的大作中提到: 】
: 有什么问题吗?
: 这是一个例程,而且运行成功过阿
: 我看过帮助,getImage()方法只有一个参数
: 你是指这个马?
: 可是改为一个参数无法使用阿

是getImage方法的源代码。
里面返回的是一个实例。并且这个实例是继承了Image类的。
就像
return new Image(){
       public .... //对Image 类中abstract 方法的实现;

   };
页: [1]
查看完整版本: 1-1-4-17 抽象类的讨论