网站开发服务费计入什么科目如何建设国外网站
网站开发服务费计入什么科目,如何建设国外网站,青岛百度网站建设,女足世界杯韩国出线在开发中#xff0c;有时候使用第三方框架时#xff0c;我们因为特殊需求#xff0c;需要继承框架中的一个Java类重写它的某个方法来达到期望的目的。 如果需要被重写的方法被使用 final 修饰了#xff0c;这种情况下我们是无法直接继承这个类来重写这个方法的。
本文所述…在开发中有时候使用第三方框架时我们因为特殊需求需要继承框架中的一个Java类重写它的某个方法来达到期望的目的。 如果需要被重写的方法被使用 final 修饰了这种情况下我们是无法直接继承这个类来重写这个方法的。
本文所述场景不一定符合大部分场景针对如下接口和类的关系的这种场景是可以通过装饰器模式构造一个 wrapped 类成员变量来变相重写接口方法接口和类的关系如下
public interface InterfaceA {void show1(); void show2();
}public class ClassA implements InterfaceA {Overridepublic final void show1() {System.out.println(show1被调用方法使用final修饰);}Overridepublic void show2() {System.out.println(show2被调用);}
}类 ClassA 实现了 InterfaceA 的所有方法然后把 show1 给固定位不可再重写。
现在需要需要创建一个 ClassB 继承 ClassA 并希望重写 show1()正常来说是不可以的。
现在可以按照下面的代码示例来曲线重写 show1 方法ClassB 的代码如下
public class ClassB extends ClassA {private final InterfaceA wrapped;public ClassB() {this.wrapped new InterfaceA() {Overridepublic void show1() {System.out.println(show1被重写);}Overridepublic void show2() {ClassB.this.show2();}};}public InterfaceA getInterfaceA() {return wrapped;}Overridepublic void show2() {System.out.println(show2被子类重写);}
}
我们在 ClassB 中声明了一个 wrapped 变量完全重新实现了接口 InterfaceA重点是我们在所有的接口方法中直接调用 ClassB 的所有对应方法这样就相当于 wrapped 装饰了原来 ClassB 实例中的 InterfaceA此时我们只需要对 show1 进行复写自己的逻辑即可其他方法原样返回。
对应测试类如下
public class OverrideTest {public static InterfaceA newInterfaceA() {
// return new ClassB();return new ClassB().getInterfaceA();}public static void main(String[] args) {InterfaceA interfaceA newInterfaceA();interfaceA.show1();interfaceA.show2();}}END
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/90363.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!