我正在寻找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类是我的实用程序类,它的方法在我的项目中的多个地方使用。我想限制我的开发人员访问特定方法。
此致 砂
答案 0 :(得分:0)
如果符合您的要求,请尝试使用此代码。创建两个接口 -
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();
}