Java:覆盖受保护的String

时间:2016-06-25 18:06:51

标签: java

我不懂Java。

如果可能,只需要快速修复。

如何覆盖受保护的字符串?

我有:

    UPDATE AffiliateComm
    SET [OrderSubtotal]=(o.SubTotal - o.OrderDiscounts), [CommDue]=t.CommRate*(o.SubTotal - o.OrderDiscounts),[Status]='MODIFIED'  
    FROM bvc_Order o 
    INNER JOIN #tbl t 
        ON o.OrderNumber = t.OrderNumber

MYFILE:

    UPDATE a
    SET [OrderSubtotal]=(o.SubTotal - o.OrderDiscounts), [CommDue]=t.CommRate*(o.SubTotal - o.OrderDiscounts),[Status]='MODIFIED'  
    FROM AffiliateComm A
    INNER JOIN bvc_Order o 
       ON o.OrderNumber = a.OrderNumber
    INNER JOIN #tbl t 
        ON o.OrderNumber = t.OrderNumbe

如何在课程 MySomething 中使用d = {"key":("v1","v2")} for key in d: print((key,) + d[key]) ? 感谢。

2 个答案:

答案 0 :(得分:2)

实际上,其他人已经回答了你的问题。如果你真的不熟悉Java,那么对你的问题最简单的答案就是把上面提到的语句放在派生类的构造函数中:

  1. 解决方案一(实际上是错误的解决方案):

    public class MySomething extends Something {
        public MySomething() {
            changeMe = "that"
        }
    }
    
  2. 更好的解决方案是在类Something中定义一个setter方法,如下所示(如果您有权访问其源代码):

    public void setChangeMe(String newValue) {
        changeMe = newValue;
    }
    
  3. 您可以通过调用

    来更改值
    Something s = new Something();
    s.setChangeMe("that");
    

答案 1 :(得分:0)

单词覆盖是编译器的提示,你知道你正在编写以你自己的方式实现父类或接口方法的代码。

说过覆盖变量/属性/字段是对术语的错误使用,并且没有多大意义

回答您的问题:您可以访问 changeMe 对象,因为它未定义为私有...因此您可以直接更改该值..

实施例

public static void main(String args[])   {
    MySomething ms = new MySomething();
    System.out.println(ms.changeMe);
    ms.changeMe = "that";
    System.out.println(ms.changeMe);
}