我可以限制另一个类可以在Java中调用的方法吗?

发布于 2021-01-30 17:29:08

假设我有类AB并且C其中的类C具有可读和可写的属性:

public class C {
    private int i = 0;

    // Writable.
    public void increment() { i++; }

    // Readable.
    public int getScore() { return i; }
}

是否可以只A使用该increment()方法而只B使用该getScore()方法?

关注者
0
被浏览
72
1 个回答
  • 面试哥
    面试哥 2021-01-30
    为面试而生,有面试问题,就找面试哥。

    不可以,无法分配每个类别的访问权限。

    考虑将您的类分为单独的接口,以便每个类仅获得一个具有所需接口的对象。例如:

    interface Incrementable { public void increment(); }
    interface HasScore { public int getScore(); }
    class C implements Incrementable, HasScore { /* ... */ }
    
    class A {
      public A(Incrementable incr) { /* ... */ }
    }
    
    class B {
      public B(HasScore hs) { /* ... */ }
    }
    

    当然,这涉及安全性,但这应该使您朝正确的方向进行思考。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看