In this post I will describe some tricky and important moments everyone developer will encounter while developing complicated projects. Also I will give some info about productivity and optimisation.

You cannot override variables, only functions. If you want to reasign variables in constructor, you must do it through a function which is called from within constructor and which is overriden. Like

 
class Parent
{
    protected var name:String
    public function Parent() {
        assignNames()
    };
    public function assignNames() {
        name = "parent"
    };
}
class Child extends Parent{
    public function Child() {
        super()
    };
    override public function assignNames() {
        name = "child"
    };
}
 

But if you dont need to reassign variables in the constructor you can do it anywhere in the execution flow.

You cannot override private functions, only protected or public.

You cannot static functions.
Static variables are not inherited and you need to declare them in each child class.

Some documentation at this link

An interesting feature of private variables in child class at this link

And some optimisation info at this link