Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java()中的多个固有和受保护变量_Java_Interface_Multiple Inheritance - Fatal编程技术网

java()中的多个固有和受保护变量

java()中的多个固有和受保护变量,java,interface,multiple-inheritance,Java,Interface,Multiple Inheritance,正如我们在Java中所知道的,我们不能在接口中有多重继承和受保护的变量,所以如何实现这段代码呢 Bar.java public class Bar { protected int a = 0; public void increaseA() { a++; } public void printA() { System.out.println(a); } } public class Foo extends Bar, Fo

正如我们在Java中所知道的,我们不能在接口中有多重继承和受保护的变量,所以如何实现这段代码呢

Bar.java

public class Bar {
    protected int  a = 0;
    public void increaseA() {
        a++;
    }
    public void printA() {
        System.out.println(a);
    }
}
public class Foo extends Bar, FooBar {
    @Override
    public void printClassName() {
        printClassName();
        System.out.println("Foo");
    }
}
public class FooBar {
    void printClassName(){
        System.out.println("FooBar");
    }
}
public class Main {
    public static void main(String[] args) {
        Foo foo = new Foo();
        FooBar fooBar = foo;
        foo.printClassName();
        Bar bar = foo;
        bar.increaseA();
        bar.printA();
    }
}
Foo.java

public class Bar {
    protected int  a = 0;
    public void increaseA() {
        a++;
    }
    public void printA() {
        System.out.println(a);
    }
}
public class Foo extends Bar, FooBar {
    @Override
    public void printClassName() {
        printClassName();
        System.out.println("Foo");
    }
}
public class FooBar {
    void printClassName(){
        System.out.println("FooBar");
    }
}
public class Main {
    public static void main(String[] args) {
        Foo foo = new Foo();
        FooBar fooBar = foo;
        foo.printClassName();
        Bar bar = foo;
        bar.increaseA();
        bar.printA();
    }
}
FooBar.java

public class Bar {
    protected int  a = 0;
    public void increaseA() {
        a++;
    }
    public void printA() {
        System.out.println(a);
    }
}
public class Foo extends Bar, FooBar {
    @Override
    public void printClassName() {
        printClassName();
        System.out.println("Foo");
    }
}
public class FooBar {
    void printClassName(){
        System.out.println("FooBar");
    }
}
public class Main {
    public static void main(String[] args) {
        Foo foo = new Foo();
        FooBar fooBar = foo;
        foo.printClassName();
        Bar bar = foo;
        bar.increaseA();
        bar.printA();
    }
}
Main.java

public class Bar {
    protected int  a = 0;
    public void increaseA() {
        a++;
    }
    public void printA() {
        System.out.println(a);
    }
}
public class Foo extends Bar, FooBar {
    @Override
    public void printClassName() {
        printClassName();
        System.out.println("Foo");
    }
}
public class FooBar {
    void printClassName(){
        System.out.println("FooBar");
    }
}
public class Main {
    public static void main(String[] args) {
        Foo foo = new Foo();
        FooBar fooBar = foo;
        foo.printClassName();
        Bar bar = foo;
        bar.increaseA();
        bar.printA();
    }
}

为此,尝试使用组合(这里我们得到了中介模式)

所以输出是

福巴

一,


您可以在Java 8中使用
接口
默认
方法。@PeterLawrey如何处理“a=0中受保护”离开
a
它在
栏中的位置
@PeterLawrey请查看我的代码(答案)我已经实现了它,但与您说的不完全一样要使它工作,您必须更改它。我建议您使用
FooBar
接口,如果您希望它工作的话。