实现接口中声明的方法(接口可以声明什么 不可以声明什么)

网友投稿 404 2023-01-16


本篇文章给大家谈谈实现接口中声明的方法,以及接口可以声明什么 不可以声明什么对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。 今天给各位分享实现接口中声明的方法的知识,其中也会对接口可以声明什么 不可以声明什么进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

java中接口声明方式有哪些?

java中没有象delphi那样有专门实现接口中声明的方法的property关键字实现接口中声明的方法
delphi实现接口中声明的方法的属性有很多优点,这点比java要好。
delphi中的接口的确可以有属性,不过只能是方法的属性,
其实此时和java是一样的。
也就是说,java中的接口不能声明属性,
delphi中也不行。
再说实现接口中声明的方法了,此时也没必要一定要用抽象类,
用接口就很好,因为接口比抽象类的复用性好。
比如说想要定义一个名字叫xxx的int型属性,
但是它和一个变量ixxx关联,
在接口中不能使用变量,
实现接口中声明的方法你就直接只需要直接声明一个getxxx方法,
然后把ixxx变量放在定义这个接口的类里面,

实现接口和类继承的区别

区别如下:

1、使用方面:

类在继承抽象类的时候,非abstract方法和属性都继承,同时abstract方法帮忙实现。

类在使用接口就像是一个模块化的机器,安上个音频接口,内部就得做个功放功能。设计好之后要按什么接口就得有什么功能。

2、结构方面:

抽象类的更像是一种树形结构,一个抽象类的范围就是下面的子类,别的管不着也没必要管。

接口的更像是一种层间结构,上层跟下层的沟通办法就是这个接口,上层想怎么调用就按照接口调用就行。

3、在逻辑方面:

按照逻辑顺序,一般先设计了接口,后写类,又因为类变多了,才抽象出了抽象类方便写更多的类。

接口定义了类的功能,抽象类抽象出了一些类的特征。

4、在代码书写方面:

抽象类提高了类和类的内聚程度,减少了代码量。

接口降低了类和类的耦合度,但是增加了代码量。

参考资料:

百度百科--接口

百度百科--继承

java 实现接口和继承有什么区别

首先的话,在 Java 中应该说“扩展”(extend)而不是“继承”(inherit),尽管知道它实现上就是C++那种继承,但逻辑上是不完全相同的。
再考虑到接口即协议,对接口的扩展,或是说对协议的扩展,实际上就包括了对其公用方法的扩展以及对其定义的扩展两个方面,其中扩展接口定义实际上即为对协议添加更多的约束,在减少了其可能包含的类的种类的同时也给了这些类更清晰的定义,也就允许用户基于这更清晰的定义做出更多的操作了。
所以呢,实际类的扩展实际上和继承是相同的,子类确实继承了父类的实现,但接口的扩展则只会获取到父接口的方法声明,继承的意味并不明显,更多的实际上在于对其原协议的扩展,因此应将子接口和父接口间的关系视为扩展而不单单是继承
其实就是多去思考为什么在Java这叫扩展不叫继承,很多问题就迎刃而解了

实现一个接口,必须要实现接口中所有的方法么?

可以不实现…
接口中的声明的方法必须全部实现实现接口中声明的方法;但是实现接口中声明的方法,抽象类中就不必实现接口中声明的方法,但需要标明其有未实现的方法!
给你一个例子实现接口中声明的方法
如果定义接口中有两种方法实现接口中声明的方法
public interface A {
a();
b();
}
假如B继承A,这样的话:
B类必须是抽象类,而且需标明其有未实现的方法。
public abstract class B implements A {
a(){}
}
你可以自己编译一下!!!

请教MFC如何声明实现接口

在InternetExpress中支持一些有别于VCL TComponent控件的控件,如QueryForm等,它们都能生成html代码以在浏览器中显示自己,这些控件主要的不同之处在于它们都是接口。
本文的目标就是展示如何自己编写可在DataForm或QueryForm里使用的InternetExpress自制控件。在开始之前最重要的是搞清楚MidItems单元。它包含有TWebForm构件的定义,它是所有InternetExpress-aware构件的起点。从它衍生出两个类:TDataForm和TQueryForm。实际上TQueryForm是从TCustomQueryForm继承来的,TCustomQueryForm是TWebForm的子类并且实现了IQueryForm接口。IQueryForm是一个没有方法的接口,也许偶尔可以用来在运行时区分DataForm和QuyeryForm(不然实在没办法解释为什么会在首要位置使用一个空的接口)。
实际的子构件也可以在MidItems单元时里找到,包括TFieldText、TTextColumn和TQueryText。它们的祖先类是TWebTextInput,也我们自制InternetExpress控件的基类,TWebTextInput拥有许多我们应该重载或实现的有趣的方法。最有趣的方法是ControlContents和AddAtrributes,它们是用来生成代表控件的HTML代码。正是它们使得RadioButton成其为无线钮、CheckBox成其为检查框。//后面会讲到,已经用过InternetExpress和页面编辑器的程序员可能注意到了:我们有几乎每一种HTML控制可用,除了Check box。我也觉得很奇怪,不过也没什么关系。
Latest News: John Kaster of Borland DevRel told me the reason they didn't implement checkbox support (yet). The state of the checkbox when off is indeterminate -- no value is passed back UNLESS the checkbox is turned on.
Borland hasn't found a solution they like, yet, and you'll be facing the same problem with my component. We're still working on that, so stay tuned...
TWebTextInput AddAttributes方法定义如下:
procedure TWebTextInput.AddAttributes(var Attrs:string);
begin
AddQuotedAttrib(Attrs,'NAME',GetHTMLControlName);
AddIntAttrib(Attrs,'SIZE',DisplayWidth);
AddIntAttrib(Attrs,'TABINDEX',TabIndex);
AddQuotedAttrib(Attrs,'STYLE',Style);
AddQuotedAttrib(Atrtrs,'CLASS',StyleRule);
AddCustomAttrib(Attrs,Custom);
end;
先不管AddQuotesAttrib和AttIntAttrib等方法,相信你能够接受AddAttributes方法输出HTML控制名字(a lookup function)、DisplayWidth、TabIndex,Style和StyleRule到一个字符串Attrs里了。ControlContents方法则使用该字符串生成我们需要的完整的HTML代码。要加入特定的HTML型控件,需要重载ControlContent方法,并使用Attrs作为上面的AddAttributes方法的返回值。
TWebCheckBox
要制作我们的简单的WebCheckBox控件,需要从TWebTextInput派生一个类,并重载ControlContents方法,新类的定义及实现如下:
type
TWebCheckbox=class(TWebTextInput)
protected
function ControlContent(Opetions:TWebContentOptions):string:override;
published
property DisplayWidth;
property ReadOnly;
property Caption
property CaptionAttributes;
property CaptionPosition;
property TabIndex;
property Style;
property Cutsom;
property StyleRule;
end;
impleamentation
function TWebCheckbox.ControlContent(Opetions:TWebContentOptions):string;
var
Attrs:string;
begin
AddAttributes(Attrs);
Result:=Format('<INPUT TYPE=CHECKBOX %0:s',[Attrs]);
end;
就这么简单,等会我们注册这个控件之后(方式见本文最后),就可以在Web Page Editor里看到它了,所以现在就可以在我们的InternetExpress应用程序里使用了。然而,这个控件只能作为DataForm的子对象,要想能作为QueryForm的子对象显示,还得做些特别的事情:
TQueryCheckBox
要让一个InternetExpress控件与QueryForm配合工作,需要加入一个接口定义并实现之(新鲜,不实现加它干嘛)。我们从前面的TWebCheckBox派生一个新的TQueryCheckBox,并实现IQueryField接口以形成一个新的可加到QueryForm里的InternetExpress自制控件。在动手之前,先看一眼IQueryField接口,如下:
type
IQueryField=interface(IHTMLField)
['{7C3211150-FCFB-11D2-AFC3-00C04FB16EC3}']
funtcion GetParamName:string;
procedure SetParamName(AParamName:string);
function GetText:string;
procedure SetText(const Value:string);
property ParamName:string read GetParamName write SetParamName;
property Text:string read GEtTExt write SetText;
end;
这意味着任何实现了IQueryField接口的类都得实现接口里定义的方法。咱们的TQueryCheckBox类的定义和实现如下(注意,咱们只实现了GetText/SetText方法,没有实现ParamName方法):
type
TQueryCheckbox=class(TWebCheckbox,IQueryField)
private
FText:string;
protected
function GetText:string;
procedure SetText(const VAlue:string);
public
class function IsQueryField:Boolean;voerride;
end;
implementation
class function TQeryCheckbox.IsQueryField:boolean;
begin
Result:=True;
end;
funciton TQueryCheckbox.GetText:string;
begin
Result :=FText;
end;
procedure TQueryCheckbox.SetText(const Value:string);
begin
FText:=Value;
end;
做为IQueryField接口的一部份,类方法IsQueryField确保任何构件可以"introspect" TQueryCheckBox构件,显然,它只对QueryForms有意义。(introspect,内省,意即构件通过在此回答“你是QueryField吗?”,上面的例子回答“是的”,已经表明心迹,QueryForm可以相信其是Query家族的成员,可以做为自己的子对象。呵呵,什么时候girl们实现这么一个方法就好了)。
Registration
最后一个任务,比起实现这些控件要复杂一些,是注册这些控件。由于我们处理的不是常规出现于控件面板的控件,需要用一个不同的方法进行注册也就不足为奇了。这回得用RegisterWebComponents过程,它接受一个InternetExpress控件数组及一个可选的(控件)编辑器参数。我们只需要做个简单的调用:
procedure Register
begin
RegisterWebComponets([TWebCheckBox,TQueryCheckBox]);
end; 关于实现接口中声明的方法和接口可以声明什么 不可以声明什么的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。 实现接口中声明的方法的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于接口可以声明什么 不可以声明什么、实现接口中声明的方法的信息别忘了在本站进行查找喔。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:详解Maven安装教程及是否安装成功
下一篇:图片管理工具接口(图片管理器)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~