2009-12-15 62 views
1

这是一个愚蠢的问题,我认为..但是..当在Delphi中声明其他班的孩子班时,孩子是直接获取父母方法吗? 解释: 名为'P'的类是名为'C'的类的父类,'P'类具有名为'Mth'的方法。 是否可以称之为“C.Mth”还是我注意到“C”(与构造也许?)申报东西..德尔福儿童班

的问题是与变量相同..

我希望足够清楚..非常感谢回复...

+0

这不就是你试用它时的工作原理吗? – 2009-12-15 22:45:37

+0

如果有人可以从答案中受益,这不是一个愚蠢的问题:-) – 2009-12-16 13:30:25

+0

只是不要混淆在Delphi控件中的“父”属性。我更喜欢使用Base和Derived类。 – 2009-12-17 13:08:07

回答

5

子类继承其父类的所有受保护的,公共和发布的属性,函数和过程。

它可以直接调用它们,没有任何特殊的语法,只要子类没有覆盖它们。

例如:

type 
    P = class 
    public 
    procedure Mth; 
    end; 

    C = class(P) 
    public 
    procedure Foo; 
    end; 

// ... implementation ... 

procedure C.Foo; 
begin 
    Mth; // Calls the P.Mth procedure. 
end; 
0

是的,你可以像他们属于孩子调用父方法。这是面向对象层次结构的一部分。

7

是的。这被称为“继承”。这意味着父类的所有属性都是由子类“继承”的。如果你在子类中没有做任何改变(重写虚拟,添加字段,添加方法等),那么子类的功能与父类相同。您可以将子类传递给期望父类的其他函数,因为通过继承,子代会共享父代的所有特质。

+1

+1,只有在不声明为私有的情况下才能访问继承的方法和字段。 – jpfollenius 2009-12-16 07:33:56