Tclass1 = class (TObject)
function A: string;
public
procedure B;
end; Tclass2 = class (Tclass1)
function A: string;
public end;{*********************************** Tclass1 ************}
function Tclass1.A: string;
begin
result:='ok:class1';
end;procedure Tclass1.B;
begin
showmessage(A);
end;{*********************************** Tclass2 *************}
function Tclass2.A: string;override;
begin
result:='ok:class2';
end;
{*********************************************************}
procedure TForm1.Button1Click(Sender: TObject);
var c:Tclass1;d:Tclass2;
begin
c:=Tclass1.Create;
d:=Tclass2.Create;
c.B;
d.B;
c.Free;
d.Free;
end;我期望的结果是:
ok:class1
ok:class2实际结果是
ok:class1
ok:class2在Java中这样定义输出的结果是:
ok:class1
ok:class2请大家讨论!
function A: string;
public
procedure B;
end; Tclass2 = class (Tclass1)
function A: string;
public end;{*********************************** Tclass1 ************}
function Tclass1.A: string;
begin
result:='ok:class1';
end;procedure Tclass1.B;
begin
showmessage(A);
end;{*********************************** Tclass2 *************}
function Tclass2.A: string;override;
begin
result:='ok:class2';
end;
{*********************************************************}
procedure TForm1.Button1Click(Sender: TObject);
var c:Tclass1;d:Tclass2;
begin
c:=Tclass1.Create;
d:=Tclass2.Create;
c.B;
d.B;
c.Free;
d.Free;
end;我期望的结果是:
ok:class1
ok:class2实际结果是
ok:class1
ok:class2在Java中这样定义输出的结果是:
ok:class1
ok:class2请大家讨论!
解决方案 »
- 哪位能给详细讲解一下STRPAS函数和PCHAR函数
- delphi2007 IDE
- 各位高手,我想用API 画一个图形,在正常情况下我输入数据他可以画得很标准,但我把数据全部乘一个比例,想用这个方法来实现图形的缩放。
- 两个串口,同时上送相同的数据,如何监测?急,高分求解!!!
- 简单问题:Access添加密码后的用户名是什么?
- 这段代码的优化
- 关于F1book的问题,会者不难啊!!!
- 请各位帮忙,解释一个一个Record类型 (Delphi)
- 怎样获得局域网中所有机器的ip
- 用多线程做数据库查询问题?
- &&&&&&&&& 高分求学校管理系统方案文档 类似的管理系统方案文档也行&&&&&&&&&&&
- 哪位高手帮我解决这个小问题?关于Query和Dbgrid中显示数据的排序
{*********************************** Tclass2 *************}
function Tclass2.A: string;
begin
result:='ok:class2';
end;
ok:class1
ok:class2实际结果是
ok:class1
ok:class2
在Java中这样定义输出的结果是:
ok:class1
ok:class2是不是我看错了,你想和实际的结果是一样的呀!!!!!!!!
我想知道class2.B是怎么实现的?
和你定义的不匹配呀
实际结果是
ok:class1
ok:class1
function A: string;virtual;
public
procedure B;
end; Tclass2 = class (Tclass1)
function A: string; override;
public end;
function Tclass1.A: string;
begin
result:='ok:class1';
end;procedure Tclass1.B;
begin
showmessage(A);
end;{*********************************** Tclass2 *************}
function Tclass2.A: string;
begin
result:='ok:class2';
end;
才是静态的覆盖了祖先类的方法
function A: string;virtual;
public
procedure B;
end; Tclass2 = class (Tclass1)
function A: string;override;
public end;
{*********************************** Tclass1 ************}
function Tclass1.A: string;
begin
result:='ok:class1';
end;procedure Tclass1.B;
begin
showmessage(A);
end;{*********************************** Tclass2 *************}
function Tclass2.A: string;
begin
result:='ok:class2';
end;
{*********************************************************}
procedure TForm1.Button1Click(Sender: TObject);
var c:Tclass1;d:Tclass2;
begin
c:=Tclass1.Create;
d:=Tclass2.Create;
c.B;
d.B;
c.Free;
d.Free;
end;
#include <iostream.h>
class class1
{
public:
virtual char*A()
{
return "ok:class1";
}
void B()
{
cout<<A()<<endl;
}
};class class2: public class1
{
public:
char*A()
{
return "ok:class2";
}
};void main()
{
class1 *c;
class2 *d;
c = new class1;
d = new class2;
c->B();
d->B();
delete c;
delete d;
}
//输出结果为ok:class1,ok:class2,如果去掉virtual结果是ok:class1,ok:class1。
//典型虚函数动态联编的例子JAVA:
public class test {
public static class Class1{
public String A(){
return "OK:Class1";
}
public void B(){
System.out.println(A());
}
}
public static class Class2 extends Class1 {
public String A(){
return "OK:Class2";
}
}
public static void main(String[] args){
Class1 c;
Class2 d;
c = new Class1();
d = new Class2();
c.B();
d.B();
}
}
//输出结果为ok:class1,ok:class2为什么JAVA结果就不一样哪?
Java怎么能得到ok:class1,ok:class2的结果哪?
Java怎么能得到ok:class1,ok:class1的结果哪?
UNIT1单元
unit Unit2;interfaceuses QDialogs;
type
Tclass1 = class (TObject)
function A: string;virtual; public
procedure B;
end;
implementationfunction Tclass1.A: string;
begin
result:='ok:class1';
end;procedure Tclass1.B;
begin
showmessage(A);
end;
end.
Unit2单元
unit Unit3;interfaceuses QDialogs, Unit2;type
Tclass2 = class (Tclass1) function A: string;override;
publicend;
implementationfunction Tclass2.A: string;
begin
result:='ok:class2';
end;end.
Form1单元var
Form1: TForm1;implementationuses Unit2, Unit3;{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
var c:Tclass1;
d:Tclass2;
begin
c:=Tclass1.Create;
d:=Tclass2.Create;
c.B;
d.B;
c.Free;
d.Free;
end;end.