delphi + 面向-- 重载,覆盖,继承,虚方法,动态方法,多态,封装,接口,Delphi(Pascal) code1. overload(重载)2
delphi + 面向-- 重载,覆盖,继承,虚方法,动态方法,多态,封装,接口,
Delphi(Pascal) code1. overload(重载)2。override (覆盖)3. inherited(继承)4.virtual (虚方法)5。dynamic(动态方法)6. 多态7. 封装8. 接口
麻烦 各位大侠 简单的讲下 他们在 程序中的目的!!! 目的,作用!!!!
Delphi(Pascal) codeif 给发=200 then MessageBox(0,'我要发200分;您只允许发表100分内的帖子。','提示 why?',MB_ICONQUESTION);
[解决办法]类的封装继承和多态 读的时候把java换成delphi
http://blog.zol.com.cn/818/article_817762.html
简单来说,类就是对一个事物抽象出来的结果。比如人可以作为一个类。一般来说,一个类具有成员变量和成员方法。成员变量相当于属性,比如‘人’具有的变量有胳膊,手脚等。而成员方法是该类能完成的一些功能,比如‘人’可以说话(talk),行走(walk)等。
对象,如果说类是一个抽象概念,那么对象就是具体对象。比如我们说‘人’就是一个抽象概念,但是具体到某个人,比如你,我,他,就是一个‘人’对象。
封装,简单理解就是把一系列的数据放在一个类中,还用前面的例子,如果形容一个人,我们可以用身高(hight),体重(weight)等来描述,如果不封装,我们需要3个变量来形容它。在面向对象中,可以用一个Person类封装这些数据,Person具有3个成员变量,分别是height,weight。使用的时候,每当生成一个这样的类的对象,就具有这3个属性。
继承,如果B类继承A类。那么B类将具有A类的所有方法,同时还可以扩展自己独有的方法和属性。还用人做例子。‘人’是父类,那么‘男人’,‘女人’都是继承自‘人’。也就是说,不论‘男人’,‘女人’,都具有‘身高’,‘体重’这两个属性,同时,他们可以有自己独有的属性,比如‘女人’可以有一个‘三围’属性-_-!
多态,在java中,同一个方法可以有多种不同的表现形式,具体说来分为重载和重写。重载就是一个方法的方法名相同而所具有的参数列表不同。比如:
public String talk(String content); //参数是String,
public String talk(String content, int number) //参数是2个,String和int
重载则是子类在继承父类的同时,重新实现了父类的某个方法。比如父类
public String talk(String content) {
System.out.print(content);
}
子类继承该类,所以也具有talk这个方法,他重新定义了该方法的实现
public String talk(String content) {
System.out.println("Hi" + content);
}
抽象类和一般类的最大区别,就是不能实例化一个对象,但是它可以被继承。
接口则是指定义了方法的名字,而不定义他的实现。方法的具体实现由其实现类去完成。比如
public interface mp3{
public void play();
public void pause();
}
这就定义了一个mp3的接口,任何其他类都可以实现这个类,但是实现这个接口就必须实现这个接口所定义的方法。换句话说,任何实现mp3的类,都必须具有play()和pause()的方法,比如
public class IPod implements mp3{
public void play(){
//具体实现
}
public void pause(){
//具体实现
}
}
[解决办法]TMyClass= class
procedure StaticFunc;//静态方法
procedure VirtualFunc;virtual;//虚拟方法
procedure DynamicFunc;Dynamic;//动态方法
procedure AbstractFunc;virtual;abstract;
1、虚类:如果该类拥有一个或一个以上虚方法,则该类即为虚类,如上面的类。
2、虚方法:声明的关键字为Virtual.因为虚方法可以被子类覆盖,所以
编译器在编译时并不能知道该虚拟方法的地址,因此编译器通过建立一个虚拟方法
表来查找运行时的函数(过程)地址。虚拟方法的调用方式和静态方法的调用方式相同。
3、虚方法表:一张记录虚拟方法和其调用地址等信息的表。一个对象的虚拟方法表既包括自己的虚拟方法也包括从祖先继承下来的虚拟方法表。因此比较耗内存。
虚拟方法表是编译器自动产生的,不需要人干预。
虚拟方法是实现多态的一种方法。父类中的虚拟方法可以被子类覆盖。
4、抽象方法必须是虚拟方法或动态方法,抽象方法不能有实现代码。抽象方法的实现代码是在其子类中实现。因此具有抽象方法的类不能被实例化。下面的代码是错误的:MyClass := TMyClass.create;
5、public 公有成员,表示其它的类可以访问其所属成员,其子类也继承其成员。
private 私有成员,其它类不能访问,也不能被继承.
protected 保护成员,其它类不能访问,但可被继承。
Published Delphi的类关键字,访问方式和Public相同,但Published成员可以出现在Object inspector;
接口定义能够与一个对象进行交互操作的一组过程和函数。接口定义的函数或过程不需要在接口中实现。只要实现了接口方法的对象,接口都可以访问。delphi的接口与C++的纯虚类相似。
type IMyinterface = interface
[ '{全局码} '] //按ctrl+shift+G自动产生.
function F1 :integer; //接口方法
end;
TMyClass = class(tinterfacedobject,IMyinterface)
function f1:integer;
end;
//实现f1函数
function TMyClass.F1 :integer;
begin
Result := 0;
end;
则我们可以写如下代码:
var
myinterface:IMyInterface;
begin
MyInterface := TMyClass.Create;
end;
virtual (虚方法)和dynamic(动态方法)一个是空间最优一个是时间最优
话说现在百度和链接已经完全没有人看了,只有贴文字才勉强会被注意到
[解决办法]
funxu热心人,讲得很细
[解决办法]
话说有个叫 DELPHI全掌握.chm 的文档,你可以看看。也可以到 cnblogs 看看万一的博客,正真的Delphi从零开始。
[解决办法]
funxu热心人,讲得很细 学习!