现在有 A类和B接口,同时有method()方法, 类C继承A实现B..
问:有什么方法使这两个method()方法不冲突??
即能覆盖类A的方法,又能实现接口B的方法??
public class C extends A implements B { .......
public static void main(String args[]){
A a=new C();
B b=new C();
a.method();//输入:覆盖A.method()
b.method();////输入实现B.method()
}
}class A{
public void method(){
System.out.println("A.method()方法");
}
}
interface B{
public int method();
}
问:有什么方法使这两个method()方法不冲突??
即能覆盖类A的方法,又能实现接口B的方法??
public class C extends A implements B { .......
public static void main(String args[]){
A a=new C();
B b=new C();
a.method();//输入:覆盖A.method()
b.method();////输入实现B.method()
}
}class A{
public void method(){
System.out.println("A.method()方法");
}
}
interface B{
public int method();
}
b.method();////输出:实现B.method()
class A{void method(){}}
interface B{void method();}
class C extends A implements B {
public void method(){ System.out.println("A.method()");}
private static B getB(){
return new B(){
public void method(){ System.out.println("B.method()");}
};
}
public static void main(String args[]){
new C().method();
C.getB().method();
}
}
public void method(){
System.out.println("A.method()方法");
}
}
interface B{
public int method();
}
A中的method方法返回为void,如果要覆盖也一样要写成public void method(){……}
而B接口中method方法返回为int,要是先这个方法写成public int method(){……}这个会冲突吗?
Adaptee.class:
public class Adaptee {
public int get220v(){
System.out.println("Adaptee---:220V");
return 220;
}
}
Adapter.class:
public class Adapter extends Adaptee implements Target{
public int get220v(){
System.out.println("---:220V");
return 110;
}
}
Target .class:
public interface Target {
int get220v();
}
Client:
public class Client {
public static void main(String rags[]) {
new Client().test();
} public void test() {
int v1 = new Adaptee().get220v();
int v2 = new Adapter().get220v();
}
}
这个都一样,只有通过内部类来实现了。
public class Adapter extends Adaptee implements Target{
}
直接这样写是会报错的 编译器已经提示有冲突了,我对这题越来越感兴趣了,继续期待中!
Target target = new Adapter();
System.out.println( target.get220v());
就是 即能覆盖类A的方法,又能实现接口B的方法!
因为C要实现B的方法,还要继承A的方法,肯定会冲突的。
可以这样来实现:
class C extends A
{
public static void main(String args[])
{
A a=new C();
B b = new B(){
public int method()
{
System.out.println("B.method()方法");
return 0;
}
};
a.method();//输入:覆盖A.method()
b.method();////输入实现B.method()
}
}class A
{
public void method()
{
System.out.println("A.method()方法");
}
}
interface B
{
public int method();
}
已验证
interface B{
public int method();
}
/*******************************************************************/
class A{
public void method(){
System.out.println("A.method()方法");
}
}
/********************************************************************/
class C extends A { private int aParam;
public void method() {
System.out.println("覆盖A.method()");
}
class D implements B{
public int method(){
System.out.println("实现B.method()");
return aParam;
}
}
} /********************************************************************/public class Test{
public static void main(String args[]){
C c=new C();
A a=c;
B b=c.new D();
a.method();//输出:覆盖A.method()
b.method();//输出:实现B.method()
}
}
如
interface E
{
public int getID();
}
interface F
{
public String getID();
}
class H implements E,F
{
//H类如何实现
.........
}
B (interface)
|
A (class or abstract class) //这里就已经判断是否实现了
|
C (method是实现的那个, 如果A没有实现, 则C的就想使用就要@Override, 不然C也是abstract class)