There's no point in having a ``++public++`` member in a non-``++public++`` class because objects that can't access the class will never have the chance to access the member.


This rule raises an issue when classes has methods, fields, or inner classes with higher visibility than the class itself has.


== Noncompliant Code Example

----
class MyClass {

  public static final float PI = 3.14;  // Noncompliant

  public int getOne() {  // Noncompliant
    return 1;
  }

  protected class InnerClass {  // Noncompliant; outer class is package-protected
    public boolean flipCoin() {  // Noncompliant; owning class is protected
      return false;
    }
    // ...
  }
}
----


== Compliant Solution

----
public class MyClass {  // Class visibility upgrade makes members compliant

  public static final float PI = 3.14;

  public int getOne() {
    return 1;
  }

  protected class InnerClass {
    protected boolean flipCoin() {  // visibility changed to match class
      return false;
    }
    // ...
  }
}
----

