我正在尝试通过类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 个字符串。
(但是,由于您正在向函数添加新参数,因此您很可能并没有真正覆盖它,而是完全改变了行为。不幸的是,我无法真正帮助您,因为我不知道您在做什么)