I would like to design class A implements interface C and reduce the visibility of a method (declared in C)to make it secure from outer world, make one of the methods in interface implemented in class A as private (reducing visibility in class A). I have to do this for security reason, how can I do this, is there a workaround. We do know that by default, the interface has public members. But there is no option for me, can someone help me. Thanks in advance.
—
So , there is no way, to have a class implement method from interface and make it private. And all classes that implement any interface’s method will always have public methods?
No, you can’t reduce the visibility of a method in an interface. What would you expect to happen if someone wrote:
? As far as the compiler is concerned, everything with a reference to an implementation of
Chas the right to call any methods within it – that’s what Liskov’s Substitution Principle is all about.If you don’t want to implement the whole of a public interface, don’t implement it – or throw exceptions if you absolutely must.
It’s also worth noting that the accessibility provided in source code is rarely a good security measure. If your class is running in a VM which in turn gets to determine its own permissions, anyone can make members visible via reflection.