PC SOFT

ONLINE HELP
FOR WINDEV, WEBDEV AND WINDEV MOBILE

Home | Sign in | English US
  • Overview
  • Syntaxes
  • Class inheritance
  • Detailed syntax
  • Syntax kept for backward compatibility
  • Redefining methods
  • Example
  • Example
  • Syntax used to call a method of base class
  • Syntax 1
  • Syntax 2
  • Syntax 3
  • Note
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaReports and QueriesUser code (UMC)
WEBDEV
WindowsLinuxPHPWEBDEV - Browser code
WINDEV Mobile
AndroidAndroid Widget iPhone/iPadApple WatchUniversal Windows 10 AppWindows Mobile
Others
Stored procedures
Overview
The hierarchical organization in class and sub-class has allowed to create the notion of inheritance.
In other words, an object of the sub-class A (derived class) that has the same characteristics as the class B (ancestor class) as well as its own characteristics inherits from all the characteristics of class B without having to duplicate the programs in the object of the sub-class A. The number of code lines is reduced.
The inheritance is the mechanism by which the class currently described uses the methods and the members defined in the existing classes.
  • The existing class is called Ancestor class or Base class.
  • The new class is called Derived class. The derived class includes the ancestor class and adds new methods, new members and new properties to it.
The purpose of the inheritance is to retrieve, for a class, the methods developed for another class, by adding the specific features of the new class.
The objects found in a derived class can access all the methods, all the members and all the properties of the ancestor classes ; it is as if the methods, the members and the properties of the ancestor classes were part of the derived class.
Characteristics of inheritance:
  • An inheritance can be multiple. In this case, the derived class can derive from several ancestor classes.
  • An inheritance can be private or public (by default).
    If the inheritance is public, you have the ability to access the methods, the properties and the members inherited from the outside of the class.
    If the inheritance is private, only the methods of the derived class can access the inherited methods, properties and members.
  • Like in all languages, the polymorphism operates with the dynamic objects only.
Versions 17 and later
AndroidUniversal Windows 10 App This feature is now available for the Android and Windows Phone applications.
iPhone/iPad This feature is now available for the iPhone/iPad applications.
New in version 17
AndroidUniversal Windows 10 App This feature is now available for the Android and Windows Phone applications.
iPhone/iPad This feature is now available for the iPhone/iPad applications.
AndroidUniversal Windows 10 App This feature is now available for the Android and Windows Phone applications.
iPhone/iPad This feature is now available for the iPhone/iPad applications.
Versions 21 and later
Universal Windows 10 App This feature is available in Universal Windows 10 App mode.
Apple Watch This feature is available in Apple Watch mode.
New in version 21
Universal Windows 10 App This feature is available in Universal Windows 10 App mode.
Apple Watch This feature is available in Apple Watch mode.
Universal Windows 10 App This feature is available in Universal Windows 10 App mode.
Apple Watch This feature is available in Apple Watch mode.
Syntaxes

Class inheritance

<NameDerivedClass> is class
[PRIVATE, PROTECTED, PUBLIC]
Inherits from <NameAncestorClass>
<Name Member Derived Class> is <Member Type>
...
END

Detailed syntax

<NameDerivedClass>
Name identifying the derived class that is currently declared.

PRIVATE, PROTECTED, PUBLIC
Optional keyword. Indicates whether the inheritance is private or not. If this keyword is not specified, the inheritance is public.

<NameAncestorClass>
Name of the ancestor class.

<Member Name Derived Class>
Name of the member of the derived class. This member can only be used in an object of the derived class.

<Member Type>
Type of the member, chosen among the available types.
FileName is Class
        Name is string
        Extension is string
        Directory is string
END

FileInformation is Class
        inherits from FileName
        FileSize is int
        FileDate is string
        FileTime is string
END

Syntax kept for backward compatibility

<NameDerivedClass> is class
[PRIVATE, PROTECTED, PUBLIC]
An object <NameAncestorClass>
<Name Member Derived Class> is <Member Type>
...
END
Redefining methods
In a derived class, a method of the base class can be redefined by creating in the derived class a method with the same name as the one of the base class.
The redefinition of methods is used to modify the behavior of the method defined in the base class ; the derived class can eventually redefine the method according to its requirements.
The redefined method is a virtual method by default.
Note: overloading a method (using two methods with the same name in the same class) is not supported in WLanguage.Note: overloading a method (using two methods with the same name in the same class) is supported in WLanguage. See Prototype overload/Overload for more details.
Note: the Object keyword is used to access the current object inside a method

Example

The FileInfo class inherits from the FileName class. These two classes have a method named Display. The Display method of the FileName class is used ty the Display method of the FileInfo class.
FileName classFileInfo class
Declaration of the classDeclaration of the class
FileName is Class
        Name is string
        Extension is string
        Directory is string
END
FileInformation is Class
        inherits from FileName
        FileSize is int
        FileDate is string          
        FileTime is string  
END
Display methodDisplay method
PROCEDURE Display()
Trace(:Name)
Trace(:Extension)
Trace(:Directory)
PROCEDURE DISPLAY()
Ancestor:Display()
Trace(:FileSize)
Trace(:FileDate)
Trace(:FileTime)

Example

The polymorphism operates with the dynamic objects only.
In this example, a virtual animal class is created. Two classes (rabbit and cat) inherit from this class. We want to create a list of different objects (rabbits and cats).
Animal is Class
END

Cat is Class
inherits from Animal
END
Rabbit is Class
inherits from Animal
END

ListA is array of 16 dynamic animals
ListA[1] = new cat
ListA[1] = new rabbit
Syntax used to call a method of base class

Syntax 1

Ancestor:<Method Name>()
Details of syntax
Ancestor
keyword used to indicate that the method to use is the method of the ancestor class immediately found before (can be used for a single inheritance). To call a method of a base class regardless of its level in the order of inheritance, syntax #2 must be used..

<Method Name>
Name of method to use in the ancestor class.

Syntax 2

<Base Class>:<Method Name>()
Details of syntax
<Base Class>
Name of ancestor class where the method to use was defined.

<Method Name>
Name of method to use in the ancestor class.

Syntax 3

:<Base Class>:<Method Name>()
Details of syntax
<Base Class>
Name of ancestor class where the method to use was defined.

<Method Name>
Name of method to use in the ancestor class.

Note

For the constructors and destructors, we recommend that you use specific syntaxes (see Syntax of constructors for the base classes and members).
Related Examples:
WD Simple OOP Training (WINDEV): WD Simple OOP
[ + ] The "WD Simple OOP" example is an educational example about the OOP with WINDEV. This example presents the operating mode of:
- classes,
- inheritances,
- virtual procedures,
- UML diagrams,
- ...
WD Controlling word processor Training (WINDEV): WD Controlling word processor
[ + ] The purpose of this example is to propose a universal interface, allowing to control these applications without having to worry about the application to control. This example is based on an object-oriented programming concept: the polymorphism. It consists in using different objects (OpenOffice object and Microsoft Word object) without really knowing which one is used.
Minimum required version
  • Version 9
This page is also available for…
Comments
Click [Add] to post a comment