What is the difference between **ngOnInit**(), **ngAfterViewInit**(), **ngafterContentInit**(), **ngAfterViewChecked**() and a **constructor**()? How do we implement them in the Angular 2? 
What are their purposes and usages? Where all will it be useful for implementing them?

Thanks.