Как написать общий код между двумя классами - PullRequest
0 голосов
/ 10 февраля 2019

В приведенном ниже коде, в class_1 и class_2 оба расширены от AbstractClass.Я пытаюсь позвонить:

c1.setValid(5)

Следующие две строки также возвращают 5:

System.out.println(c1.getValid());
System.out.println(c2.getValid());

просьбы, дайте мне знать, как я могу изменить класс Super для достижения этого.

main :

public class Main {

public static void main (String[] args) {
    Class_1 c1 =  new Class_1();
    Class_2 c2 = new Class_2();

    System.out.println(c1.getValid());
    System.out.println(c2.getValid());

    c1.setValid(5);
    System.out.println(c1.getValid());
    System.out.println(c2.getValid());
}
}

class_1

public class Class_1 extends AbstractClass {

public Class_1() {
    // TODO Auto-generated constructor stub
}

public void setValid(int v) {
    SetValid(v);
}

public int getValid() {
    return GetValid();
}

}

class_2 .:

public class Class_2 extends AbstractClass {

public Class_2() {
    // TODO Auto-generated constructor stub
}

public void setValid(int v) {
    SetValid(v);
}

public int getValid() {
    return GetValid();
}

}

код :

public abstract class AbstractClass {

public int isValid = -1;

public void SetValid(int value) {
    this.isValid = value;
}

public int GetValid() {
    return this.isValid;
}

Ответы [ 2 ]

0 голосов
/ 10 февраля 2019

Если ваша цель состоит в том, чтобы все экземпляры вашего класса всегда имели одинаковое значение, тогда вы можете просто использовать ключевое слово static.

public abstract class AbstractClass {

    public static int isValid = -1;

    ...

}

Когда для глобальной переменной используется static, вы, по сути, заявляете, что эта глобальная переменная будет использоваться всеми экземплярами этого класса, включая его детей.

Следовательно, обновление isValid новым значением в Class_1 приведет к тому, что Class_2 будет иметь то же значение, что и Class_1, обновленный.

0 голосов
/ 10 февраля 2019

Вы можете удалить setValid и getValid из классов 1 и 2 и использовать родительские функции SetValid и GetValid, если это ваш вопрос.

...