java 重写方法在内存_java - Java接口:继承,重写和重载方法 - 堆栈内存溢出

/**

* This is what you have

*/

interface IXR {

//bla-bla-bla

}

class CXR implements IXR {

//concrete implementation of bla-bla-bla

}

interface IX {

public IXR f();

}

interface IYR {

//some other bla-bla-bla

}

class CYR implements IYR {

//concrete implementation of the some other bla-bla-bla

}

interface IY {

public IYR f();

}

/**

* This is what you need to add

*/

interface IZR extends IXR, IYR {

//EMPTY INTERFACE

}

class CZXR extends CXR implements IZR {

//EMPTY CLASS

}

class CZYR extends CYR implements IZR {

//EMPTY CLASS

}

class CZ implements IX, IY

{

public static boolean someCondition = true;

public IXR implementationOf_X_f()

{

System.out.println("CXR");

return new CZXR();

}

public IYR implementationOf_Y_f()

{

System.out.println("CYR");

return new CZYR();

}

public IZR f() {

if (someCondition) {

return (IZR) implementationOf_X_f();

} else {

return (IZR) implementationOf_Y_f();

}

}

}

/**

* This is the usage of the required class

*/

class program

{

public static void main(String[] x) {

CZ o = new CZ();

IZR r = o.f();

if (CZ.someCondition) {

CXR xr = (CXR) r;

//bla-bla-bla

} else {

CYR yr = (CYR) r;

//bla-bla-bla

}

}

} /**

* This is what you have

*/

interface IXR {

//bla-bla-bla

}

class CXR implements IXR {

//concrete implementation of bla-bla-bla

}

interface IX {

public IXR f();

}

interface IYR {

//some other bla-bla-bla

}

class CYR implements IYR {

//concrete implementation of the some other bla-bla-bla

}

interface IY {

public IYR f();

}

/**

* This is what you need to add

*/

interface IZR extends IXR, IYR {

//EMPTY INTERFACE

}

class CZXR extends CXR implements IZR {

//EMPTY CLASS

}

class CZYR extends CYR implements IZR {

//EMPTY CLASS

}

class CZ implements IX, IY

{

public static boolean someCondition = true;

public IXR implementationOf_X_f()

{

System.out.println("CXR");

return new CZXR();

}

public IYR implementationOf_Y_f()

{

System.out.println("CYR");

return new CZYR();

}

public IZR f() {

if (someCondition) {

return (IZR) implementationOf_X_f();

} else {

return (IZR) implementationOf_Y_f();

}

}

}

/**

* This is the usage of the required class

*/

class program

{

public static void main(String[] x) {

CZ o = new CZ();

IZR r = o.f();

if (CZ.someCondition) {

CXR xr = (CXR) r;

//bla-bla-bla

} else {

CYR yr = (CYR) r;

//bla-bla-bla

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值