Java抽象和接口
我正在寻找用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"); //
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
注释,以帮助编译器告诉您可能的打字错误。