Design a console application that will print an estate agent property sale commission report. Use

an abstract class named EstateAgent that contains variables to store the estate agent's name and
property price. Create a constructor accepting the estate agent's name and property price as
parameters. In this class, also create get methods to get the estate agent name, property price
and estate agent commission. The agent commission is calculated at 20% of the property sale
price. The EstateAgent class must implement an iEstateAgent interface that contains the
following:
public interface iEstateAgent
{
String getAgentName();
double getPropertyPrice();
double getAgentCommission();
}
Create a subclass called EstateAgentSales that extends the EstateAgent class. The
EstateAgentSales class must contain a constructor to accept the estate agent name and the
property sale amount as parameters. Write code for the printPropertyReport method, which
prints the estate agent name, property sale price and the estate agent commission amount.
Finally, write a RunApplication class to instantiate the EstateAgentSales class.
in java

Here is the code for the console application in Java:

// EstateAgent abstract class
abstract class EstateAgent implements iEstateAgent {
private String agentName;
private double propertyPrice;

public EstateAgent(String agentName, double propertyPrice) {
this.agentName = agentName;
this.propertyPrice = propertyPrice;
}

public String getAgentName() {
return agentName;
}

public double getPropertyPrice() {
return propertyPrice;
}

public double getAgentCommission() {
return propertyPrice * 0.2;
}
}

// iEstateAgent interface
public interface iEstateAgent {
String getAgentName();
double getPropertyPrice();
double getAgentCommission();
}

// EstateAgentSales subclass
class EstateAgentSales extends EstateAgent {
public EstateAgentSales(String agentName, double propertyPrice) {
super(agentName, propertyPrice);
}

public void printPropertyReport() {
System.out.println("Estate Agent: " + getAgentName());
System.out.println("Property Price: $" + getPropertyPrice());
System.out.println("Agent Commission: $" + getAgentCommission());
}
}

// RunApplication class
public class RunApplication {
public static void main(String[] args) {
EstateAgentSales agent1 = new EstateAgentSales("Agent 1", 100000.00);
agent1.printPropertyReport();

EstateAgentSales agent2 = new EstateAgentSales("Agent 2", 150000.00);
agent2.printPropertyReport();
}
}

Sure! Here's an example Java code for the console application you described:

First, create the abstract class `EstateAgent`:

```java
public abstract class EstateAgent implements iEstateAgent {
private String agentName;
private double propertyPrice;

public EstateAgent(String agentName, double propertyPrice) {
this.agentName = agentName;
this.propertyPrice = propertyPrice;
}

public String getAgentName() {
return this.agentName;
}

public double getPropertyPrice() {
return this.propertyPrice;
}

public double getAgentCommission() {
return this.propertyPrice * 0.20;
}
}
```

Next, create the `iEstateAgent` interface:

```java
public interface iEstateAgent {
String getAgentName();
double getPropertyPrice();
double getAgentCommission();
}
```

Then, create the subclass `EstateAgentSales` which extends `EstateAgent`:

```java
public class EstateAgentSales extends EstateAgent {
public EstateAgentSales(String agentName, double propertySaleAmount) {
super(agentName, propertySaleAmount);
}

public void printPropertyReport() {
System.out.println("Estate Agent Name: " + getAgentName());
System.out.println("Property Sale Price: $" + getPropertyPrice());
System.out.println("Estate Agent Commission: $" + getAgentCommission());
}
}
```

Finally, create the `RunApplication` class to instantiate the `EstateAgentSales` class:

```java
public class RunApplication {
public static void main(String[] args) {
EstateAgentSales agent = new EstateAgentSales("John Doe", 1000000);
agent.printPropertyReport();
}
}
```

When you run the `RunApplication` class, it will create a `EstateAgentSales` object with the agent name "John Doe" and property sale amount of $1,000,000. It will then print the property report which includes the agent name, property sale price, and agent commission amount.

I hope this helps! Let me know if you have any further questions.

Here is the code for the console application that prints an estate agent property sale commission report:

1. EstateAgent.java
```java
public abstract class EstateAgent implements iEstateAgent {
private String agentName;
private double propertyPrice;

public EstateAgent(String agentName, double propertyPrice) {
this.agentName = agentName;
this.propertyPrice = propertyPrice;
}

public String getAgentName() {
return agentName;
}

public double getPropertyPrice() {
return propertyPrice;
}

public double getAgentCommission() {
return propertyPrice * 0.2;
}
}
```

2. iEstateAgent.java
```java
public interface iEstateAgent {
String getAgentName();
double getPropertyPrice();
double getAgentCommission();
}
```

3. EstateAgentSales.java
```java
public class EstateAgentSales extends EstateAgent {
public EstateAgentSales(String agentName, double propertyPrice) {
super(agentName, propertyPrice);
}

public void printPropertyReport() {
System.out.println("Estate Agent Name: " + getAgentName());
System.out.println("Property Sale Price: $" + getPropertyPrice());
System.out.println("Estate Agent Commission: $" + getAgentCommission());
}
}
```

4. RunApplication.java
```java
public class RunApplication {
public static void main(String[] args) {
EstateAgentSales agentSales = new EstateAgentSales("John Doe", 200000);
agentSales.printPropertyReport();
}
}
```

The `EstateAgent` class is an abstract class with a constructor that accepts the estate agent's name and property price. It also implements the `iEstateAgent` interface and provides the required get methods.

The `EstateAgentSales` class extends the `EstateAgent` class and has a constructor to accept the estate agent name and property sale amount. It also includes a method called `printPropertyReport` to print the estate agent name, property sale price, and estate agent commission amount.

The `RunApplication` class is used to instantiate the `EstateAgentSales` class and call the `printPropertyReport` method to display the property sale commission report.

You can compile and run the application using any Java IDE or by using the command line tools.