i'm non-programmer minimal coding exposure, i'd modify existing code base. i've simplified code i'm working below. please let me know if can provide further information or if makes no sense @ all! vocab hard. :)
in classa, i'm instantiating subclass of classb. change i'd make requires new variable, "myvar" (set in classa), available subclass classc not subclass classd. appropriate way make variable available classc?
classa:
public class classa { private string myvar = "hi"; private string mystuff = "bye"; private int myoption = 1; private string getmyclass(string mystuff) throws exception { final myclasschoice myclass = getmyclasschoice(myoption); return myclass.getresponse(mystuff); } private myclasschoice getmyclasschoice(myoption) { switch(myoption) { case 1: return new classc(); case 2: return new classd(); } } }
classb:
public class classb { public abstract string getresponse(string mystuff) throws ioexception; }
classc:
public class classc extends classb { // stuff mystuff // stuff myvar }
classd:
public class classd extends classb { // stuff mystuff }
you either pass constructor when instantiating object , save in instance variable,
public class classa { // ... private myclasschoice getmyclasschoice(myoption) { switch(myoption) { case 1: return new classc(myvar); case 2: return new classd(); } } } public final class classc extends classb { private string myvar; // constructor: public classc(string myvar) { this.myvar = myvar; } // stuff mystuff // stuff myvar private void dostuff() { system.out.println(myvar); } }
or pass method when use it,
public final class classa { // ... public void somemethodusingclasscdostuff() { myclass.dostuff(myvar); } } public final class classc extends classb { // stuff mystuff // stuff myvar public void dostuff(string myvar) { system.out.println(myvar); } }