When you are saying a class public --> you mean constructor also public(implicit).
you can have private or default or protected constructor for public class but there will be no meaning to say my class is public.
Constructor scope overrides the class scope 1. constructor private: no other class can instantiate it. 2. constructor protected: only child can have instance of parent. 3. constructor (default): classes in current package can instantiate it. 4. constructor public: Any class can instantiate it. Hope this is clear.