Java - Method accessibility inside package-private class?

前端 未结 2 1791
死守一世寂寞
死守一世寂寞 2021-01-11 18:25

If I have a java class which is package-private (declared with \"class\", not \"public class\"), there is really no difference if the methods inside are declared public or p

2条回答
  •  别那么骄傲
    2021-01-11 19:06

    If I have a java class which is package-private (declared with "class", not "public class"), there is really no difference if the methods inside are declared public or protected or package-private, right?

    Well maybe not immediately. But if you then (or in the future) declare a 'protected' or 'public' class that inherits from the package-private class, then the visibility of the members of the original class do matter.

    As @kmccoy points out, declaring the class as final removes the possibility of subclasses.

    But this is really only window-dressing. If you then decide that you really need to create subclasses, you simply remove the final ... and then you are back in the situation where the choice of access modifiers does matter.

    IMO, the bottom line is that you should pick the most appropriate modifiers ... even if it is not necessary right now. If nothing else, your choice of modifiers should document your intent as to where the abstraction boundaries lie.

提交回复
热议问题