我试图通过类ParentMessage生成自定义XML消息,但我没有 知道如何覆盖字段和方法。
对于这个问题,有3个课程。
1 - ParentMessage (源代码核心),我无法访问代码。
2 - ChildMessage (我的类核心),我需要通过创建ParentMessage的新对象来覆盖 ParentMessage类。
3 - Main (客户端类),使用ChildMessage的字段和方法。
感谢您的帮助。
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){};
}
}
答案 0 :(得分:0)
首先,为了覆盖类的方法,您的类必须扩展该类:
abstract class ChildMessage extends ParentMessage
其次,字段不能被覆盖。只有方法可以。
答案 1 :(得分:-1)
一个非常简单的例子:
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 MESSAGE1
如果仍然不清楚,请告诉我
答案 2 :(得分:-2)
要覆盖方法,您需要具有完全相同的签名。
此:
public void sendMessage(String type, String body, String body2, String body3);
不会覆盖此:
public void sendMessage(String element, String type, String body);
因为前者接受4个参数而后者只接受3.如果要覆盖该方法,则必须删除最后一个参数,以便两者都接受3个字符串。
(但是,既然你要为这个函数添加新的参数,很可能你并没有真正重写它,而是完全改变了这个行为。不幸的是我无法真正帮助你,因为我不确切地知道你是什么做)