Declaration of Private Instance Variables and Methods
The private part of a class declaration gives the declaration of any private methods, instance variables, and private class constants. Private methods cannot be overridden by subclasses, because they are completely private to the declaring class. Likewise, the instance variables can't be overridden.
The declarations of private variables and methods are done within the class declaration.
Note:
You cannot have private methods or instance variables in an interface type of class.
In the following example, there are both public as well as private methods and properties. Any method that is declared before the keyword Private in the initial class declaration is public. Any method declared after the keyword Private is private. Properties are only declared in Public. Instances and Constants are only declared in Private
In the following example, the class Example extends the class ExampleBase. It has both public as well as private methods and properties. It also defines the private method in the definition of methods section of the code (the private definitions are marked like this.)
import PWWPACK:ExampleBase;
class Example extends ExampleBase
method Example();
method NumToStr(&Num As number) Returns string;
method AppendSlash();
property number SlashCount get;
property number ImportantDayOfWeek get set;
property string SlashString readonly;
property date ImportantDate;
private
method NextDayOfWeek(&Dow As number) Returns date;
Constant &Sunday = 1;
instance string &BaseString;
end-class;
Global string &CurrentBaseString;
/* Method definitions */
method NumToStr
return String(&num);
end-method;
method AppendSlash
&SlashString = &SlashString | "/";
end-method;
get SlashCount
Return Len(&SlashString) - Len(&BaseString);
end-get;
get ImportantDayOfWeek
Return Weekday(&ImportantDate);
end-get;
set ImportantDayOfWeek
&importantdate = %This.nextdayofweek(&newvalue);
end-set;
/* Private method. */
method nextdayofweek
Return &ImportantDate + (&dow - Weekday(&ImportantDate));
end-method;
/* Constructor. */
method Example
&BaseString = &CurrentBaseString;
&SlashString = &BaseString;
&ImportantDate = Date(19970322);
end-method;