Reference no: EM132976036
Object-Oriented Programming with Java
(a) Give three differences between an interface and an abstract class in Java. [3 marks]
(b) A novice programmer writes the following code in order to be able to completely clone an object of type Car.
public class Tyre { private int treadRemaining;
public void SetTread(int t) { treadRemaining=t; }
public int GetTread() { return treadRemaining; } }
public class Car extends Vehicle implements Cloneable { private Tyre tyres[] = new Tyre[4];
public Car() { for (int i=0; i<4; i++) tyres[i] = new Tyre(); }
public Object clone() throws CloneNotSupportedException { Car c = new Car();
c.tyres = this.tyres; return c; } }
Question (i) Explain what it means for the treadRemaining field to be private. Explain why it is good programming practice for such fields to be private.
Question (ii) Identify the type of interface that Cloneable is. What is the defining characteristic of such interfaces?
Question (iii) Identify and explain two reasons why this code may not function as intended.
Question (iv) Rewrite the code to address the problems you have identified and allow Car objects to be fully cloned.