Suppose a company called ABC Books and its subsidiary company called Children’s Book, each have their own company address. In all applications written for the company, whenever there is reference to ABC Books, their address must be displayed and when there is reference to Children’s Books, their address should be displayed.

Write a Java program in which you:
Create a parent class and a child class to depict the above scenario;
Create a method named displayAddress() to print the address; ensure that that the child’s class method overrides the parent’s class method when the Children’s Book address must be printed.

Sure! Here's an example code that fulfills the given requirements:

```java
class Company {
private String address;

public Company(String address) {
this.address = address;
}

public void displayAddress() {
System.out.println(address);
}
}

class ABCBooks extends Company {
public ABCBooks(String address) {
super(address);
}
}

class ChildrensBook extends Company {
public ChildrensBook(String address) {
super(address);
}

@Override
public void displayAddress() {
System.out.println("Children's Book address: " + super.address);
}
}

public class Main {
public static void main(String[] args) {
ABCBooks abcBooks = new ABCBooks("123 ABC Street");
ChildrensBook childrensBook = new ChildrensBook("456 Children's Street");

// Display addresses using both parent and child classes
abcBooks.displayAddress();
childrensBook.displayAddress();
}
}
```

Explanation:

We have a parent class called `Company` which has a private field `address` and a method `displayAddress()` to print the address.

The child classes `ABCBooks` and `ChildrensBook` inherit from the `Company` class. They use the `super()` keyword to invoke the parent class constructor and pass the address to it.

The `ChildrensBook` class overrides the `displayAddress()` method to print the address with a custom message.

In the `main` method, we create objects of `ABCBooks` and `ChildrensBook` with their respective addresses. We then call the `displayAddress()` method using both objects to observe the different behavior based on the class they belong to.

When we run the program, it will display the addresses for ABC Books and Children's Book accordingly:

```
123 ABC Street
Children's Book address: 456 Children's Street
```