When ‘SubClass’ extends ‘SuperClass’, when it inherit its methods and properties, it creates methods and properties that distinguishes from the ‘SuperClass’?
Or if I create an instance of ‘SubClass’ and I try to modify a property, that was inherited from ‘SuperClass’, am I modificating the super class property also?
Thanks.
EDIT
package {
public class SubClass extends SuperClass {
public function SubClass() {
trace('superclass value n='+superClass.n+'\n');
trace('subclass changes inherited n'+'\n');
n = 3;
trace('subclass value n='+n+'\n');
trace('superclass value n='+superClass.n+'\n');
}
}
}
Returns me:
superclass value n=-1;
subclass changes inherited n;
subclass value n=3;
superclass value n=3;
I will explain it in short.
We have two classes – Subclass and SuperClass.
SuperClass have four methods:
From the Subclass you:
You can however override these methods. Overriding doesn’t change a methods of SuperClass but change them only in SubClass.
As you know, your SuperClass can also have variables, that also can be public, protected, private or internal. You cannot override them, but you can do this with getters or setters however.
You can access variables that are created as public or protected by using a word “super” like this: super.someVariable .
So everything is up to you, if you want to create a different variables of the same name in SuperClass and SubClass, just declare one as private in SuperClass. If you want to have one variable that SuperClass and SubClass both can access – just declare it as protected or public.
Hope that was clear.