如何使用新对象重写父类



我正在尝试通过类ParentMessage生成自定义XML消息,我没有知道如何覆盖字段和方法。

对于这个问题,有3个类。

1 - 父消息(源代码核心),我无法访问代码。

2 - 消息(我的类核心),我需要通过创建父消息的新对象覆盖父消息类。

3 – (客户端类),使用子消息的字段和方法。

感谢您的任何帮助。

abstract class ParentMessage extends Packet {
    // this is source code, current fields library , I can't Change the method or have access to these fields.
    public String element  =  "message"; 
    public String type       =  "email";    
    public String body      =  ""; 
    public String phone    =  ""; 
    public String from      =  "";
    public String to          =  "";

    pubilc void sendMessage(String element, String type, String body){
        // this current method library , I can't Change the method
        //build xml format
        //send message
        //example of format XML message
        //<message to='rotem@example.com/LIB'>
        //      <from>bob@example.com/LIB</from>
        //      <type>email</type>
        //      <body>some text body</body>
        //</message>
    }
}

//

abstract class ChildMessage {
        // this my class I want to override the ParentMessage Fields and methods 
        // and make here the change code.
        //example of custom XML message
    public String element       =  "rootmessage";    //override the field
    public String element2       =  "element2";          //I add new field       
    public String element3     =  "element3";           //I add new field       
    public String type            =  "web";                 //override the field
    public String body2          =   "body2";            //I add new field       
    public String body3          =   "body3";             //I add new field       
    public ParentMessage parentMessage = new ParentMessage();
    pubilc void sendMessage(String type, String body, String body2, String body3){
            //<rootmessage to='rotem@example.com/LIB'>
        //      <from>bob@example.com/LIB</from>
        //      <type>web</type>
        //      <body>some text body</body>
        //      <element2>
        //          <body2>some text body2</body2>
        //      </element2>
        //      <element3>
        //          <body3>some text body3</body3>
        //      </element3>
        //</rootmessage>
        //send message
    }
}

//

public class Main {
    // client class
    public String from           =  "bob@example.com/LIB";
    public String to             =  "rotem@example.com/LIB";
    public String type            =  "android";
    public String body           =  "some text body"; 
    public String body2          =   "some text body2";
    public String body3          =   "some text body3";
    public static void main( String ... args ) {
        public ChildMessage childMessage = new ChildMessage();
        childMessage.sendMessage (type, body, body2, body3){};
    }
}

首先,为了覆盖类的方法,你的类必须扩展该类:

abstract class ChildMessage extends ParentMessage

其次,字段不能被覆盖。只有方法可以。

一个

非常简单的例子:

public abstract class Test1 {
    public String element  =  "message0"; 
    public String element1  =  "message1";
}
public class Test2 extends Test1{
    public String element  =  "message2"; 
    public void printMe() {
        System.out.println(element);
        System.out.println(element1);
    }
}

您将看到它将打印:消息2消息1

如果仍然不清楚,请告诉我

若要重写方法,需要具有完全相同的签名。

这:

public void sendMessage(String type, String body, String body2, String body3);

不会覆盖此内容:

public void sendMessage(String element, String type, String body);

因为前者接受 4 个参数,而后者只接受 3 个参数。如果要重写该方法,则必须删除最后一个参数,以便两者都接受 3 个字符串。

(但是,由于您正在向函数添加新参数,因此您很可能并没有真正覆盖它,而是完全改变了行为。不幸的是,我无法真正帮助您,因为我不知道您在做什么)

相关内容

  • 没有找到相关文章

最新更新