Does it make a difference to mark methods as public
in package-private classes?
class SomePackagePrivateClass
{
void foo(); // package private method
public void bar(); // public method
}
Is there any practical difference in visibility between foo
and bar
here?
Example using inheritance:
A.java
package pkg1
class A {
void foo();
public void bar() {};
}
B.java
package pkg1
public class B extends A{
}
C.java
package pkg2
public class C {
public void doSomething() {
B b = new B();
b.bar(); //ok
b.foo(); //won't work, since foo() is not visible outside of package 'pkg1'
A a = new A(); //won't work since A is not visible outside of package 'pkg1'
a.bar(); //won't work, since a cannot be created
}
}