java()中的多个固有和受保护变量
正如我们在Java中所知道的,我们不能在接口中有多重继承和受保护的变量,所以如何实现这段代码呢 Bar.javajava()中的多个固有和受保护变量,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
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
接口,如果您希望它工作的话。