Java抽象和接口

Java抽象和接口,java,design-patterns,interface,abstraction,Java,Design Patterns,Interface,Abstraction,我正在寻找用Java解决问题的方法。希望团队能帮助我 考虑以下类别: Class A{ //constructor Object obj; public A(Object obj){ this.obj = obj; } public void ma1(){ system.out.println("In ma1"); obj.mc1(); } public void ma2(){ system.out.println("In ma2"); //

我正在寻找用Java解决问题的方法。希望团队能帮助我

考虑以下类别:

Class A{
//constructor
Object obj;

public A(Object obj){
 this.obj = obj;
}

public void ma1(){
      system.out.println("In ma1");
      obj.mc1();
}

public void ma2(){
      system.out.println("In ma2");
     //A should not be able to access mc2
     obj.mc2();
}

}

Class B{

//constructor
Object obj
public B(Object obj){
 this.obj = obj;
}

public void mb1(){
system.out.println("In mb1");
// B should not be able to access mc1
obj.mc1();
}

public void mb2(){
system.out.println("In mb2");
obj.mc2();
}

}

Class C{

public void mc1(){
system.out.println("In mc1");
}

public void mc2(){
system.out.println("In mc2");
}

}

public static void main(String[] args){

A a = new A(new C);
B b = new B(new C);
a.ma1();
a.ma2();

b.mb1();
b.mb2();
}
现在我希望对象“a”应该能够访问mc1而不是mc2 我希望对象“b”能够访问mc2而不是mc1

有人能告诉我如何实现上述功能吗? 注意:类A、B是我的实用程序类,它的方法在我的项目中的多个地方使用。我想限制我的开发人员访问特定的方法

问候,,
如果符合您的要求,请尝试此代码。创建两个接口-

public interface A1 {
    public void mc1();
}

public interface B1 {
    public void mc2();
}

public class A {
    //constructor
    A1 obj;

    public A(A1 obj){
     this.obj = obj;
    }

    public void ma1(){
          System.out.println("In ma1");
          obj.mc1();
    }

    public void ma2(){
          System.out.println("In ma2");
         //A should not be able to access mc2
         obj.mc2();
    }


}


public class B {
    //constructor
    B1 obj;
    public B(B1 obj){
     this.obj = obj;
    }

    public void mb1(){
    System.out.println("In mb1");
    // B should not be able to access mc1
    obj.mc1();
    }

    public void mb2(){
    System.out.println("In mb2");
    obj.mc2();
    }

}
使用A1和B1接口实现您的C类-

public class C implements A1,B1{
    public void mc1(){
        System.out.println("In mc1");
        }

    public void mc2(){
        System.out.println("In mc2");
        }
}
这是你的主要方法-

public static void main(String[] args){

        A1 a1 = new C();
        A a = new A(a1);

        B1 b1 = new C();
        B b = new B(b1);

            a.ma1();
        a.ma2();

        b.mb1();
        b.mb2();
}

您可以让C实现两个接口,每个接口一个方法,并定义A应该接收一个接口的实例,B应该接收另一个接口的实例。C将符合这两个条件。谢谢@njzk2。然而,我无法理解你的建议。你能详细说明并提供代码吗?为什么被否决?这些将如何限制A访问C类的mc2和B访问C类的mc1?顺便说一句,提前感谢您所做的一切help@user3401717:A只知道A1,因此知道mc1,而不知道mc2。在A1实例上访问mc2甚至不会编译。@Moni:我建议对实现的方法使用
@Override
注释,以帮助编译器告诉您可能的打字错误。