Having a class and some of its methods sharing the same name is misleading, and leaves others to wonder whether it was done that way on purpose, or was the methods supposed to be a constructor.
public class Foo { public Foo() {...} public void Foo(String label) {...} // Noncompliant }
public class Foo { public Foo() {...} public void foo(String label) {...} // Compliant }