我看过一些书,也问过好多人,没人能给我一个满意的答案。 (300分)

  • 主题发起人 主题发起人 Rick.Qin
  • 开始时间 开始时间
R

Rick.Qin

Unregistered / Unconfirmed
GUEST, unregistred user!
在看了JAVA两个星期之后,我对OOP的概念还是很晕。其中:
用JAVA编程,就要像在对“实物”编程那样思考,所以,希望有深切领悟下列概念的朋友能用最通俗易懂的例子来阐述,好吗?不胜感激!
1、什么是“实现”,这个词太抽象了,为什么不把implement叫做“工具”呢?真别扭。
2、什么是“抽象”,-------------该问题已被SunruiJia大侠解决(100分)。
3、什么是“接口”,接口是在哪儿定义的?接口的作用是什么?
因为我比较白痴,所以还请高手们能以最浅显直白的方法阐述上面的概念,拜托了。1个问题100分。
 
和 C++ 差不多吧?
 
什么是“实现”?
个人理解:通过有限的代码和步骤来完成一个具体的功能,这个有限的代码和步骤就是实现。
 
建议你看一下张孝祥的论坛和教学盘,里面讲的例子通俗易懂。
www.it315.org
 
什么是“接口”?
个人理解:接口是提供给其它过程使用的调用具体功能的定义部分。例如一个过程的定义语句,其它过程不需要知道这个功能是如何完成的(实现的),只须知道按这过程定义的方法、参数进行调用就可以了。
 
给点例子代码好吗?关于“接口”的。
 
我只会用delphi,JAVA没用过,用DELPHI做的例子可以吗?
它们的概念应该是相同的。
 
unit tools_print;//这个单元是直接控件打印机的过程
//以下是接口部分,其它过程可以看见。其它过程只须要知道调用那个过程,传递什么样的参数就可以了,不用了解这个功能是怎样完成的。
interface
uses SysUtils,Classes;
procedure Prints(s:string='');
procedure Printsln(s:string='');
procedure Set_lpt(s:string='lpt1');
procedure FileToPrint(fn:string);
//以下是实现部分,其它过程看不见
implementation
var
lpt:string='lpt1';
f:textfile;
function open_lpt:boolean;
begin
......
end;

procedure prints(s:string='');
begin
.......
end;

procedure printsln(s:string='');
begin
........
end;

procedure set_lpt(s:string='lpt1');
begin
lpt:=s;
end;

procedure FileToPrint(fn:string);
var
ss:Tstrings;
begin
ss:=Tstringlist.Create;
try
ss.LoadFromFile(fn);
Prints(ss.Text);
finally
ss.Free;
end;
end;

end.
 
问题1:实现是指具体完成一个类的设计,使其中的方法全部实现,对于接口和抽象类而言就是将他们中的方法具体实现出来
问题2:抽象类是指在设计某些类的时候有些方法在这个类层面上无法实现,需要在它们继承的子类中实现,这时这些方法称为抽象方法,包含这些方法的类就是抽象类
问题3:接口是只包含一些暂时无法实现的方法的类,接口的存在是为了方便多重继承
建议你把基础的java书仔细看看,一般书上都讲得很清楚
 
问sunruijia,
那“抽象类”到底有什么作用呢?能给我举个现实生活中的例子说明一下抽象类的功能吗?万分感谢啊。
 
次时代的例子很精彩哦,可就是看不懂。因为,,,我不懂DELPHI啊。[xx(]
 
建议你看看<Java2参考大全 第五版>
网上只有第四版下载,我就看的是电子书,对于入门来说,是个不错的选择。好懂。
 
renyi
E文的?
 
谢谢renyi提供的信息,我会为你加上20分。
 
我不同意sunruijia关于“接口”的意见,接口是提供给其它过程使用的调用具体功能的定义部分,它的作用是封装功能的实现部分,可以使其它过程在不知实现方法的前提下来完成指定的功能。系统的API函数不也就是系统提供给我们调用系统资源的接口吗?
如果接口不能完成过程的要求,重新继承的方法叫“重载”。
 
举个经典例子,先是SHAPE抽象类它的DRAW方法是抽象方法,这个方法的实现是有他的派生类矩形RECT类实现
abstract class shape
{
abstract public void draw();
}
class rect extented shape
{
public void draw()
{
//do some thing
}
}
可以看出只有在类RECT这层才知道如何实现抽象类的抽象方法,而在抽象类SHAPE层是不知道如何实现的
 
哦。我已经有点明白了。就是说抽象的东西,abstract class是只有轮廓没有实体,也不能被实例化,abstract method是只定义了一个方法的名字在abstract class中,具体的动作和运作过程只能在他的子类中来编写。
那,启用“抽象类”的好处是不是有利于程序的层次分明、功能清晰呢?是不是有利于方法或类的重用和重载呢?
 
后退
顶部