Lets say I have a class
public class Base {}
and a child class
public class Derived extends Base {
public void Foo(Object i){
System.out.println("derived - object");
}
}
and main class
public class Main {
public static void main(String[] args) {
Derived d = new Derived();
int i = 5;
d.Foo(i);
}
}
In console we will see
derived – object
Some time later I want to modify my superclass like this :
public class Base {
public void Foo(int i) {
System.out.println("base - int");
}
}
Now if I run my programm I will see:
base - int
So can I make a method in superclass not avaliable in my child class?
In result I want to see derived – object.
I see some don’t understand what I want so I’ll try to explain:
I want to modify only superclass and I don’t want to modify my child class.. for example if I will make jar with my superclass and jar with my childs. I don’t want to change all jars.. I want to add method into superclass and make it avaliable for superclass..
And such code
public class Main {
public static void main(String[] args) {
Derived d = new Derived();
int i = 5;
d.Foo(i);
Base b = new Base();
b.Foo(i);
}
}
give me
derived – object
base – int
You should use following signature for
Foomethod in base class:This way you can override method
Foofrom base class. Now you do not override this method but overload it instead.If you want to use
public void Foo(int i)signature in your base class then you can defineFoomethod in base class asprivate.PS: I hope that I’ve understood you.