Have a look at this example:
class Parent{
Child child = new Child();
Random r = new Random();
}
class Child{
public Child(){
//access a method from Random r from here without creating a new Random()
}
}
How can I access the Random object from within the Child object?
Have the Parent
class pass its own instance of Random
to the Child
class.
class Parent{
Child child;
Random r = new Random();
public Parent()
{
child = new Child(r);
}
}
class Child{
public Child(Random r){
}
}
Classic Occam's razor.
It may be the case that if only your Parent
class ever creates instances of Child
, for its own internal use, then you could use inner classes, like so:
class Parent {
Random r = new Random();
Child child = new Child();
private class Child {
Child() {
Parent.this.r; // Parent's instance of Random
}
}
}
There are other reasons why you may want to use inner classes. But, I'm hesitant to suggest them, because requiring access to another class's instance variables is generally not a good practise.
First of all your example doesn't demonstrate parent child relationship in java.
Its only a class using another type reference.
in this particular case you can only do new Parent().r //depending upon r's visibility.
or you can pass the Parent reference to Child (by changing Child's constructor).
class Parent{
Child child = new Child(this);
Random r = new Random();
}
class Child {
public Child(Parent p){
//access a method from Random r from here without creating a new Random()
p.r.nextBoolean();
}
}
In actual inheritance you don't need to do anything, the super class's members are inherited by extending classes. (again available in child class based on their visibility)
class Parent{
Child child = new Child();
Random r = new Random();
}
class Child extends Parent{
public Child(){
//access a method from Random r from here without creating a new Random()
super.r.nextBoolean();
//or even r.nextBoolean will be same in this case
}
}
more at : http://docs.oracle.com/javase/tutorial/java/IandI/subclasses.html