关于面向对象的问题,overload 和 override 有什么区别?

hongsushou 2003-10-10 03:24:10
如题!

还有那里有面向对象的好教材下载啊!先谢谢了!
...全文
119 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
reallike 2003-10-10
  • 打赏
  • 举报
回复
无敌了。
FrameSniper 2003-10-10
  • 打赏
  • 举报
回复
《高手突破》的内容快成了讲解重载和覆盖的经典了!

其实很简单,你这样想,作为类的三大特点之一,而且也是最重要的特点的多态,无非就是要实现同一类事物的不同表现!所有的事物的类型都一样,因为他们有共同的来源,但他们的表现可能千差万别,因为他们有自身额外的发展。Delphi实现多态是借助于Override指示字!而Oerload是和类特性没有任何关系的,这个关键字仅仅是为了解决类中方法同名的冲突!

至于向上映射,楼上节选的文章中已经说的很明白了,其实就一句话:A中派生了B,B完全继承了A的特性,所以试图通过B的指针去访问A是可能出错的(因为B有的可能A根本不具有,所以虽然量C用A来实现,但申明毕竟是B,所以编译器还认为是对B的访问,所以会AV错误),为了避免这种可能,Delphi干脆就限制了这种可能发生的情况!
snowfog 2003-10-10
  • 打赏
  • 举报
回复
overload如wweijie(林黛玉) 所述,即可以用在类中,也可以用在全局函数。
override如wweijie(林黛玉) 所述,与基类virtual对应,基类的虚方法可以定义为抽象(abstract)和非抽象。
A_ZHU 2003-10-10
  • 打赏
  • 举报
回复
猛得很!
IORILI 2003-10-10
  • 打赏
  • 举报
回复
一楼猛
wweijie 2003-10-10
  • 打赏
  • 举报
回复
overload指两个函数的名字相同但参数不同,程序通过参数来判断是哪个函数。
override指重载父类的同名的函数
shmilyjiujiu 2003-10-10
  • 打赏
  • 举报
回复
重载:相同函数名,不同入口参数的实现方法。overload
覆盖:替代基类中的同名函数,不需要关键字。
多态:父类中的方法在子类中的不同体现。相当于遗传中的变异(:)个人观点)。也属于一种覆盖。

多态是通过关键字override在子类中体现的。在父类中,该方法可以是动态的或是虚方法。也就是关键字dynamic和virtual。着两种的主要区别在于编译器的处理方式上一个使用了DMT另一个使用了VMT。因此执行的速度和内存的消耗量也各有不同。

还有就是静态的虚方法了。

下面摘自《高手突破》

这里有一个初学者经常混淆的概念。
覆盖(override)和重载(overload)。
覆盖是指子类重新定义父类的虚函数的做法。
而重载,是指允许存在多个同名函数,而这些函数的参数表不同(或许参数个数不同,或许参数类型不同,或许两者都不同)。
其实,重载的概念并不属于“面向对象编程”,重载的实现是:编译器根据函数不同的参数表,对同名函数的名称做修饰,然后这些同名函数就成了不同的函数(至少对于编译器来说是这样的)。如,有两个同名函数:function func(p:integer):integer;和function func(p:string):integer;。那么编译器做过修饰后的函数名称可能是这样的:int_func、str_func。对于这两个函数的调用,在编译器间就已经确定了,是静态的(记住:是静态)。也就是说,它们的地址在编译期就绑定了(早绑定),因此,重载和多态无关!

真正和多态相关的是“覆盖”。当子类重新定义了父类的虚函数后,父类指针根据赋给它的不同的子类指针,动态(记住:是动态!)的调用属于子类的该函数,这样的函数调用在编译期间是无法确定的(调用的子类的虚函数的地址无法给出)。因此,这样的函数地址是在运行期绑定的(晚邦定)。

结论就是:重载只是一种语言特性,与多态无关,与面向对象也无关!
  
引用一句Bruce Eckel的话:“不要犯傻,如果它不是晚邦定,它就不是多态。”
  
那么,多态的作用是什么呢?我们知道,封装可以隐藏实现细节,使得代码模块化;继承可以扩展已存在的代码模块(类);它们的目的都是为了--代码重用。而多态则是为了实现另一个目的--接口重用!
shmilyjiujiu 2003-10-10
  • 打赏
  • 举报
回复
封装、继承、多态构成了OOP的三大基本核心,封装、继承在之前我们曾作过介绍,而多态没有进行详细的介绍,在此给以补充,以完成OOP的三大主题来结束OOP的那一块。关于多态在很多资料上都有介绍,而且介绍的非常精彩,那么就让这篇文章再来进行一次总绍吧。
首先说点废话,以下的介绍以及实例中,我将以Object Pascal作为讲解的工具,而多态实质上是OOP的,不属于某一个工具的,它是一种信仰。在此处虽然以Objec Pascal来进行描述,其实可以扩展到任何的语言中。言归正转,继续我们的话题。
什么是多态?多态的本质是什么?多态和封装、继承有什么关系?它在OO中站有什么样的地位?多态给我们的工作代来了什么?本文就对这些问题加以阐述,在阐述的过程中来理解多态,认识多态,应用多态。
什么是多态?似乎没有一个统一的定义来规范多态,或许以我们自己的理解方式来解释多态更为贴切,在此我们不引用一些术语来进行定义,就初学者也可以理解的方式来形像这个定义:多态,顾名思议,就是多种形态,而这种多种形态又具体又体现在了什么地方?可以这样理解,我们可以用一种轮廓的物体来描述不至一种的多个物体,而至于我们到底要描述那个物体的状态,对于我而言不很重要。为什么要这样说呢?多态就是给我们体供了这样一种机制,我们对它仅仅是一个形式上的声明、定义,而具体的实现上的细节我们没有必要在此进行关心。或是具体的实现细节将交给别的东西去实现。我们所声明的这个基类从某种意义上而言只是一种定义。就如接口一样,没有实现部分,说到这儿,不得不说多态的本质了。多态的本质就是基类提供一系列的虚拟方法,如果试图去实现这个基类的话,将被编译器告之这样是行不通的。多态性的完整提体是交对象和他的子对象共同完成的一个思维方式。 多态性是允许你将父对象设置成为和一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作。对于用户而言,他们所关心的只不过是那些没有实现细节的父类所提供的虚拟方法罢了。如果以接口的话来讲就是:我们不去关心,也没有必要去关心接口的实现细节,我们所关心的仅仅是接口为我们提供的方法来完成我们的功能,而至于接口以何种方式来实现我们所需要的不同功能甚至是一个特定方式的多个功能都是其内部的事。不知道这样的解释是否让大家感觉很模糊,在理解上是否感觉不能很好的接受。请继续往下看。
谈到多态,我们首先要明白,对于多态而言,其父类提供了很多的虚拟方法,所以我们没有办法去直接实现这个父类,只能通过它的派生类去覆盖其提供的虚拟的方法,所以这就产生了多态。我们都知道,一个类可以被多个子类所继承,而每个子类所实现的方法又不一至,或是根据它们自己特有的特点对一个特定的方法的实现上因为类差别而存在着差别,但是我们完全可以通过父类去模糊化这些操作。对子类的方法的调用完全都可以通过基类去实现。由此而言,如果此基类没有被派生,那么这个类是完全没有存在的意义的!只有它被某一个子类派生了,那么它就正真的有存在的意义了。这种意义又提体在什么地方?或我们以什么手段来让这种意义成为焦点呢?这就是我们需要进一步走进多态的原因,如下所示:
TA = Class
Public
Procedure A ; virtual ; abstract;
Procedure B ; Virtual ; abstract;
Procedure C ; virtual ; abstract;
end;
当我们声明了类TA时,可以看到它有三个方法,而且也注意到了这三个方法都是完全虚拟的,如果此时我们试图实例化这个TA,将会没有任何的意义的,因为我们无法去实现类TA给我们提供的各种方法,或者说编译器将不提供空间/机制来让我们实现这些虚拟的方法。只有通过其子类进行覆盖这些虚拟方法才可以正真的将它们提体出它的作用。而覆盖就是说子类重新的定义、实现了基类的方法。如:
TB = Class(TA)
Private
B_Str : String;
Public
Constructor Create(Value : String);
Destructor Destroy();override;
{这是覆盖。设么地方可以用override?当他积累相对应的方法是虚拟的或是动态的时候才可以用override}
Procedure A ; override;
Procedure B ; override;
Procedure C ; override;
end;

TC = Class(TA)
Private
C_Str : String;
Public
Constructor Create(Value : String);
Destructor Destroy();override;
Procedure A ; override;
Procedure B ; override;
Procedure C ; override;
end;
这里有一个初学者或是不太注意语法的人经常混淆的概念。覆盖(override)和重载(overload)。上面说了,覆盖是指子类重新定义父类的虚函数的做法(inherted的用法是什么意思你真正的明白吗?)。而重载,是指允许存在多个同名函数,而这些函数的参数表不同(或许参数个数不同,或许参数类型不同,或许两者都不同)。如下:
Procedure OpenSQL(Sender : TADOQuery;SQLStr : String); overload;
{当重复时,返回为False,否则返回为True}
Function OpenSQL(SQLStr : String) : Boolean ; overload;

Function ifrepeat(TableName,FieldName,FieldValue : String;IntValue : Integer = 0):Boolean;overload;
Function ifRepeate(TableName : String;FieldName , FieldValue :
Array of String) : String ;overload;
可以很清晰的看到上边的代码就是一个子类覆盖了基类的虚拟方法的过程,而此时还不能很明确的提体出来多态的特性,或是说多态的本质问题还没有提体出来,并且您可能于晚期绑定也不是很明白,下边将给以解释。
当我们从抽象类TA派生出了类TB和TC,并且,子类也覆盖了基类的虚拟方法,现在如何应用这些方法呢?我们将以什么样的形式去调用这些方法呢?这才是多态最值得焦点的时刻,也是最能体现多态的本质的地方,之前已经给您灌输了多态的本质就是将子类类型的指针赋值给父类类型的指针,只要这样的赋值发生了,多态也就产生了,因为实行了“向上映射”。何以这样说呢?请继续我们的实例,假设它们的实现方法分别如下:
{ TC }

procedure TC.A;
begin
inherited;
{inherted的意思就是把相应的消息交给其父类去处理,他不属于我们讨论的范畴}
ShowMessage('TC' + C_Str);
end;
……
{ TB }

procedure TB.A;
begin
inherited;
ShowMessage('TB' + B_Str);
end;
……
现在我们就可以通过父类来来对子类进行调用,而这个过程其实就是一个“向上映射“的过程,既:子类类型的指针赋值给父类类型的指针;我们可以在此定义一个全局的过程来验证我们上边的话:
Procedure Test(Const pA : TA);
begin
pa.A;
{请将您的注意力放在此处,我们说了,TA是一个抽像类,它所提供的方法都是虚拟的,只有被覆盖了才可以进行应用,那么此处的处理是否是正确的呢?答案是肯定的,于是,多态在此处便提体的淋漓尽止,同时我也给出了调用的过程}
end;
procedure Tform.ButtonClick(Sender: TObject);
var
vTC : TC;
begin
vTC := TC.Create('多态实例_vTC');
Test(vTC);
vTC.Free;
end;
{此时你是否可以看明白了这种“向上映射“的机制呢?vTC做为一个子类TC的引用值(对象指针),完全可以赋值给其基类TA,于是,此处就发生了子类类型的指针赋值给父类类型的指针,于是多态就产生了!!!}
此处再一次的对晚期绑定或是动态进行说明:当子类重新定义了父类的虚函数后,父类指针根据赋给它的不同的子类指针,动态(记住:是动态!)的调用属于子类的该函数,这样的函数调用在编译期间是无法确定的(调用的子类的虚函数的地址无法给出)。因此,这样的函数地址是在运行期绑定的(晚邦定)。
我想,此时,你应该对多态很明白了吧,那么我们讲了多态是OOP的一个重中之重,那么它倒底有什么作用?它给我们的项目将会带来什么效率上的飞跃呢?仅仅是为了完成某种实现方法吗?仅仅是作为一个概念而存在吗?这些都是我们在理解了多态之后必须去思考的东西。那么下边就多态将会如何的影响我们的效率进行阐述。我们知道,封装可以隐藏实现细节,使得代码模块化;继承可以扩展已存在的代码模块(类);它们的目的都是为了——代码重用。而多态则是为了实现另一个目的——接口重用!
如果还没有很明白多态,不妨参考下边的例子。
在这个问题上可以这样说:大炮可以打鸟,火枪也可以打鸟,你用那个?我不管是大炮还是火枪,我只知道他们都可以打鸟!向恐龙一样大的鸟我用大炮(就是一个例子,哪有那么大的鸟啊?打什么鸟对于长官来说就是一句话:打死它们,用什么?他不管),小鸟我用火枪。敌人来了我还可以打敌人,这就是动态的最终解释和一种接口重用!
有很多地方我是应用前辈的话。
 学习对象对java感兴趣,但没有任何软件编程基础,想先从零基础入手的软件开发爱好者;希望从另外一些简单的其他语言转型从事java开发的求职人员。适合大学生学习计算机入门,通过java语言计算机二级。想从事编程开发的人员、具有计算机基础、面试不过关的待业者、出校门的大学生、以及编程能力提升的从业者、以及世界500强的java工程师。 课程目标:你将对java内容有个全面的掌握,助编程能力的提升,让你理解500强企业要求的难度,通过计算机二级java语言考试 学习计划如果是待业者,明天用8个小时,会在两个月内完成。如果是上班族,每周至少用12-20小时,4-6个月内完成。课后有附加资料和练习来巩固知识并加强编程能力。此课程注重500强企业的编程能力实战要求。Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程 。Java具有简单性、面向对象、分布式、健壮性、安全性、平台独立与可移植性、多线程、动态性等特点  。Java可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序等。Java 具备下列特性。1.简单性Java看起来设计得很像C++,但是为了使语言小和容易熟悉,设计者们把C++语言中许多可用的特征去掉了,这些特征是一般程序员很少使用的。例如,Java不支持go to语句,代之以提供break和continue语句以及异常处理。Java还剔除了C++的操作符过载(overload)和多继承特征,并且不使用主文件,免去了预处理程序。因为Java没有结构,数组和串都是对象,所以不需要指针。Java能够自动处理对象的引用和间接引用,实现自动的无用单元收集,使用户不必为存储管理问题烦恼,能更多的时间和精力花在研发上。2.面向对象Java是一个面向对象的语言。对程序员来说,这意味着要注意应中的数据和操纵数据的方法(method),而不是严格地用过程来思考。在一个面向对象的系统中,类(class)是数据和操作数据的方法的集合。数据和方法一起描述对象(object)的状态和行为。每一对象是其状态和行为的封装。类是按一定体系和层次安排的,使得子类可以从超类继承行为。在这个类层次体系中有一个根类,它是具有一般行为的类。Java程序是用类来组织的。Java还包括一个类的扩展集合,分别组成各种程序包(Package),用户可以在自己的程序中使用。例如,Java提供产生图形用户接口部件的类(java.awt包),这里awt是抽象窗口工具集(abstract windowing toolkit)的缩写,处理输入输出的类(java.io包)和支持网络功能的类(java.net包)。3.分布性Java设计成支持在网络上应用,它是分布式语言。Java既支持各种层次的网络连接,又以Socket类支持可靠的流(stream)网络连接,所以用户可以产生分布式的客户机和服务器。网络变成软件应用的分布运载工具。Java程序只要编写一次,就可到处运行。4.编译和解释性Java编译程序生成字节码(byte-code),而不是通常的机器码。Java字节码提供对体系结构中性的目标文件格式,代码设计成可有效地传送程序到多个平台。Java程序可以在任何实现了Java解释程序和运行系统(run-time system)的系统上运行。在一个解释性的环境中,程序开发的标准“链接”阶段大大消失了。如果说Java还有一个链接阶段,它只是把新类装进环境的过程,它是增量式的、轻量级的过程。因此,Java支持快速原型和容易试验,它将导致快速程序开发。这是一个与传统的、耗时的“编译、链接和测试”形成鲜明对比的精巧的开发过程。5.稳健性Java原来是用作编写消费类家用电子产品软件的语言,所以它是被设计成写高可靠和稳健软件的。Java消除了某些编程错误,使得用它写可靠软件相当容易。Java是一个强类型语言,它允许扩展编译时检查潜在类型不匹配问题的功能。Java要求显式的方法声明,它不支持C风格的隐式声明。这些严格的要求保证编译程序能捕捉调用错误,这就导致更可靠的程序。可靠性方面最重要的增强之一是Java的存储模型。Java不支持指针,它消除重写存储和讹误数据的可能性。类似地,Java自动的“无用单元收集”预防存储漏泄和其它有关动态存储分配和解除分配的有害错误。Java解释程序也执行许多运行时的检查,诸如验证所有数组和串访问是否在界限之内。异常处理是Java中使得程序更稳健的另一个特征。异常是某种类似于错误的异常条件出现的信号。使用try/catch/finally语句,程序员可以找到出错的处理代码,这就简化了出错处理和恢复的任务。6.安全性Java的存储分配模型是它防御恶意代码的主要方法之一。Java没有指针,所以程序员不能得到隐蔽起来的内幕和伪造指针去指向存储器。更重要的是,Java编译程序不处理存储安排决策,所以程序员不能通过查看声明去猜测类的实际存储安排。编译的Java代码中的存储引用在运行时由Java解释程序决定实际存储地址。Java运行系统使用字节码验证过程来保证装载到网络上的代码不违背任何Java语言限制。这个安全机制部分包括类如何从网上装载。例如,装载的类是放在分开的名字空间而不是局部类,预防恶意的小应用程序用它自己的版本来代替标准Java类。7.可移植性Java使得语言声明不依赖于实现的方面。例如,Java显式说明每个基本数据类型的大小和它的运算行为(这些数据类型由Java语法描述)。Java环境本身对新的硬件平台和操作系统是可移植的。Java编译程序也用Java编写,而Java运行系统用ANSIC语言编写。8.高性能Java是一种先编译后解释的语言,所以它不如全编译性语言快。但是有些情况下性能是很要紧的,为了支持这些情况,Java设计者制作了“及时”编译程序,它能在运行时把Java字节码翻译成特定CPU(中央处理器)的机器代码,也就是实现全编译了。Java字节码格式设计时考虑到这些“及时”编译程序的需要,所以生成机器代码的过程相当简单,它能产生相当好的代码。9.多线程性Java是多线程语言,它提供支持多线程的执行(也称为轻便过程),能处理不同任务,使具有线索的程序设计很容易。Java的lang包提供一个Thread类,它支持开始线索、运行线索、停止线索和检查线索状态的方法。Java的线索支持也包括一组同步原语。这些原语是基于监督程序和条件变量风范,由C.A.R.Haore开发的广泛使用的同步化方案。用关键词synchronized,程序员可以说明某些方法在一个类中不能并发地运行。这些方法在监督程序控制之下,确保变量维持在一个一致的状态。10.动态性Java语言设计成适应于变化的环境,它是一个动态的语言。例如,Java中的类是根据需要载入的,甚至有些是通过网络获取的。 尹成老师带你步入Java语言基础的殿堂,讲课生动风趣、深入浅出,全套视频内容充实,整个教程以Java语言为核心,完整精彩的演练了Java语言操作流程以及各种精彩的小项目等,提高竞赛能力,非常适合同学们学习!课程特色特色一:通俗易懂本视频语言简洁,通俗易懂,将难以理解的编程问题用简单清晰的语言描述,让你更容易理解。特色三:内容丰富本视频讲解的java语言知识更加丰富翔实,较之其他视频,本视频讲解的java语言知识更多更深入。特色三:配图详尽本视频在讲解知识点时都配图了表格或图示,在讲解案例时,都配备了流程图或分析图示,让你对所学知识点或案例理解更清晰。特色四:实战性强本视频讲解的每个知识都配备了一个小案例,这样既增加了学生动手能力,又巩固了学生所学知识。特色五:加入尹成老师微信群本视频尹成老师亲自答疑
1. Java基础部分 7 1、一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制? 8 2、Java有没有goto? 8 3、说说&和&&的区别。 8 4、在JAVA中如何跳出当前的多重嵌套循环? 8 5、switch语句能否作用在byte上,能否作用在long上,能否作用在String上? 9 6、short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错? 9 7、char型变量中能不能存贮一个中文汉字?为什么? 9 8、用最有效率的方法算出2乘以8等於几? 10 9、请设计一个一百亿的计算器 10 10、使用final关键字修饰一个变量时,是引用不能变,还是引用的对象不能变? 11 11、"=="和equals方法究竟有什么区别? 12 12、静态变量和实例变量的区别? 13 13、是否可以从一个static方法内部发出对非static方法的调用? 13 14、Integer与int的区别 13 15、Math.round(11.5)等於多少? Math.round(-11.5)等於多少? 14 16、下面的代码有什么不妥之处? 14 17、请说出作用域public,private,protected,以及不写时的区别 14 18、OverloadOverride区别。Overloaded的方法是否可以改变返回值的类型? 15 19、构造器Constructor是否可被override? 16 20、接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承具体类(concrete class)? 抽象类中是否可以有静态的main方法? 16 21、写clone()方法时,通常都有一行代码,是什么? 16 22、面向对象的特征有哪些方面 17 23、java中实现多态的机制是什么? 18 24、abstract class和interface有什么区别? 18 25、abstract的method是否可同时是static,是否可同时是native,是否可同时是synchronized? 20 26、什么是内部类?Static Nested Class 和 Inner Class的不同。 20 27、内部类可以引用它的包含类的成员吗?有没有什么限制? 22 28、Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)? 23 29、super.getClass()方法调用 23 30、String是最基本的数据类型吗? 24 31、String s = "Hello";s = s + " world!";这两行代码执行后,原始的String对象中的内容到底变了没有? 24 32、是否可以继承String类? 25 33、String s = new String("xyz");创建了几个String Object? 二者之间有什么区别? 25 34、String 和StringBuffer的区别 25 35、如何把一段逗号分割的字符串转换成一个数组? 26 36、数组有没有length()这个方法? String有没有length()这个方法? 26 37、下面这条语句一共创建了多少个对象:String s="a"+"b"+"c"+"d"; 26 38、try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后? 27 39、下面的程序代码输出的结果是多少? 28 40、final, finally, finalize的区别。 30 41、运行时异常与一般异常有何异同? 30 42、error和exception有什么区别? 30 43、Java中的异常处理机制的简单原理和应用。 30 44、请写出你最常见到的5个runtime exception。 31 45、JAVA语言如何进行异常处理,关键字:throws,throw,try,catch,finally分别代表什么意义?在try块中可以抛出异常吗? 32 .... ....
一. Java基础部分 7 1、一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制? 7 2、Java有没有goto? 7 3、说说&和&&的区别。 8 4、在JAVA中如何跳出当前的多重嵌套循环? 8 5、switch语句能否作用在byte上,能否作用在long上,能否作用在String上? 9 6、short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错? 9 7、char型变量中能不能存贮一个中文汉字?为什么? 9 8、用最有效率的方法算出2乘以8等於几? 9 9、请设计一个一百亿的计算器 9 10、使用final关键字修饰一个变量时,是引用不能变,还是引用的对象不能变? 11 11、"=="和equals方法究竟有什么区别? 11 12、静态变量和实例变量的区别? 12 13、是否可以从一个static方法内部发出对非static方法的调用? 12 14、Integer与int的区别 13 15、Math.round(11.5)等於多少? Math.round(-11.5)等於多少? 13 16、下面的代码有什么不妥之处? 13 17、请说出作用域public,private,protected,以及不写时的区别 13 18、OverloadOverride区别。Overloaded的方法是否可以改变返回值的类型? 14 19、构造器Constructor是否可被override? 15 20、接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承具体类(concrete class)? 抽象类中是否可以有静态的main方法? 15 21、写clone()方法时,通常都有一行代码,是什么? 15 22、面向对象的特征有哪些方面 15 23、java中实现多态的机制是什么? 17 24、abstract class和interface有什么区别? 17 25、abstract的method是否可同时是static,是否可同时是native,是否可同时是synchronized? 18 26、什么是内部类?Static Nested Class 和 Inner Class的不同。 19 27、内部类可以引用它的包含类的成员吗?有没有什么限制? 20 28、Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)? 21

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧