Java向超类添加方法

古斯塔沃·洛佩斯

我有一个我无法访问其源代码的类。

public class IDontHaveAccessToSource {...}

我想为它添加一些方法,如下所示:

public class MyClass extends IDontHaveAccessToSource {
    myMethod1() {...}
    myMethod2() {...}

    @Override
    methodInIDontHaveAccessToSource(){...}
}

ClassCastException每当我想投射任何返回IDontHaveAccessToSourceMyClass.

我怎么能做这样的事情?

我不想使用

public class MyClass {
    IDontHaveAccessToSource obj;

    MyClass(IDontHaveAccessToSource obj) {
        this.obj = obj;
    }
    ...
}

并且没有任何构造函数可用于IDontHaveAccessToSource. 它通过从另一个类调用函数来“创建”:

IDontHaveAccessToSource obj = loadObject(filename);
阿列克谢·R。

您不能将更一般类的对象转换为更具体的对象,因为内存中没有与子类的特定部分相关的对象数据。假设你有一个 A 类,它有一个字段 fA。当您实例化该类的对象时,该字段将被初始化并在内存中占据一些位置。现在您通过添加字段 fB 将类 A 扩展到 B。您创建了一个在内存中分配 fA 和 fB 的对象。

A aObj = new B(); 是正确的转换,因为 A 知道 aF,一旦您访问 fA,它就会在内存中找到该字段;

B bObj = new A(); 这是因为引用 bF 不会成功(A 的实例化没有在内存中分配 fB)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Java向类添加方法

来自分类Dev

向类添加方法

来自分类Dev

如何使用owlready python向类添加超类?

来自分类Dev

如何在Kotlin中向Java类添加静态方法

来自分类Dev

Java 8向类添加扩展/默认方法

来自分类Dev

超类的子方法(java)

来自分类Dev

从createElement方法向对象添加ID /类

来自分类Dev

C ++:向基类接口添加方法

来自分类Dev

向Node.js类添加方法

来自分类Dev

向Ruby Array开放类添加方法

来自分类Dev

使用原型向 Typescript 类添加方法

来自分类Dev

在Java中向Thread类添加函数

来自分类Dev

在Java中向Thread类添加函数

来自分类Dev

java类的添加方法

来自分类Dev

Java超类调用子类方法

来自分类Dev

Java:只能由超类调用的方法

来自分类Dev

来自超类的Java语言调用方法

来自分类Dev

继承调用超类方法java

来自分类Dev

Java使用新类向现有类添加功能,同时仍公开先前类的所有方法

来自分类Dev

无法从“必需”文件中的类向超全局变量添加密钥

来自分类Dev

Java反射:从超类继承的类中调用GetDeclaredFields()方法

来自分类Dev

向类添加功能

来自分类Dev

向数组添加类

来自分类Dev

从超类的超类调用方法

来自分类Dev

从超类的方法中找到方法的内容?(Java / Eclipse)

来自分类Dev

从超类的方法中找到方法的内容?(Java / Eclipse)

来自分类Dev

从超类调用方法

来自分类Dev

从超类调用方法

来自分类Dev

Java:在跳过中间继承的超类时调用基本超类方法