Sto lavorando a un compito a casa per la mia classe di programmazione che comporta l'implementazione di interfacce. Il problema qui è che in realtà non riesco a capire le interfacce o il modo in cui sono usate (il professore non era molto bravo nel spiegarlo).Java - Interfacce di implementazione
L'incarico era di creare una superclasse "Veicolo", e di tre sottoclassi, qualcosa come "Camion" o "Jeep" che avrebbero ciascuno un paio di tratti propri. La classe "Vehicle" deve implementare l'interfaccia comparabile, che credo di aver capito (ho il metodo compareTo()
scritto confrontando il numero di porte sui veicoli), e un'altra classe deve anche implementare la classe "Hybrid" (non ho idea cosa significhi). Dobbiamo quindi implementare i metodi toString()
, equals(Object o)
e compareTo(Object o)
.
Penso di avere il compareTo()
verso il basso, ma con il equals()
non ne ho idea. L'ultima cosa che dobbiamo fare è scrivere un Main da testare, ciò significa creare una serie di oggetti Vehicle, stamparli, ordinarli e poi ristamparli. Dovrebbe inoltre scorrere l'array e stampare il prezzo premium per gli ibridi e utilizzare il metodo equals(Object o)
per confrontare 2 veicoli.
Ecco il codice per il mio "veicolo" superclasse
package vehicle;
abstract public class Vehicle implements Comparable {
private String color;
private int numberOfDoors;
// Constructor
/**
* Creates a vehicle with a color and number of doors
* @param aColor The color of the vehicle
* @param aNumberOfDoors The number of doors
*/
public Vehicle(String aColor, int aNumberOfDoors) {
this.color = aColor;
this.numberOfDoors = aNumberOfDoors;
}
// Getters
/**
* Gets the color of the vehicle
* @return The color of the vehicle
*/
public String getColor() {return(this.color);}
/**
* Gets the number of doors the vehicle has
* @return The number of doors the vehicle has
*/
public int getNumberOfDoors() {return(this.numberOfDoors);}
// Setters
/**
* Sets the color of the vehicle
* @param colorSet The color of the vehicle
*/
public void setColor(String colorSet) {this.color = colorSet;}
/**
* Sets the number of doors for the vehicle
* @param numberOfDoorsSet The number of doors to be set to the vehicle
*/
public void setNumberOfDoors(int numberOfDoorsSet) {this.numberOfDoors = numberOfDoorsSet;}
@Override
public int compareTo(Object o) {
if (o instanceof Vehicle) {
Vehicle v = (Vehicle)o;
return this.numberOfDoors - v.getNumberOfDoors();
}
else {
return 0;
}
}
/**
* Returns a short string describing the vehicle
* @return a description of the vehicle
*/
@Override
public String toString() {
String answer = "The car's color is "+this.color
+". The number of doors is"+this.numberOfDoors;
return answer;
}
}
E mi invieranno anche uno dei miei sottoclassi
package vehicle;
abstract public class Convertible extends Vehicle {
private int topSpeed;
// Constructor
/**
* Creates a convertible with a color, number of doors, and top speed
* @param aColor The color of the convertible
* @param aNumberOfDoors The number of doors of the convertible
* @param aTopSpeed The top speed of the convertible
*/
public Convertible (String aColor, int aNumberOfDoors, int aTopSpeed) {
super(aColor, aNumberOfDoors);
this.topSpeed = aTopSpeed;
}
// Getters
/**
* Gets the top speed of the convertible
* @return The top speed of the convertible
*/
public int getTopSpeed() {return(this.topSpeed);}
// Setters
/**
* Sets the top speed of the convertible
* @param topSpeedSet The top speed to set to the convertible
*/
public void setTopSpeed(int topSpeedSet) {this.topSpeed = topSpeedSet;}
/**
* Returns a short description of the convertible
* @return a short description of the convertible
*/
@Override
public String toString() {
String answer = "The car's color is "+super.getColor()
+", the number of doors is "+super.getNumberOfDoors()
+", and the top speed is "+this.topSpeed+" mph.";
return answer;
}
}
Sono sicuramente non chiedere a nessuno di fare il lavoro per me, ma se qualcuno riuscisse a gettare un po 'più di luce su come funzionano le interfacce e su ciò che questo compito sta davvero chiedendo sarebbe fantastico.
Tutto l'aiuto è molto apprezzato
Grazie!
Un'interfaccia è fondamentalmente un contratto per una classe. Dice che se vuoi definirti un 'Comparable' devi implementare questi metodi che costituiscono un' Comparable'. –
Un'interfaccia è solo un modo per forzare le classi a guardare e comportarsi in modo standardizzato. Quando un'interfaccia definisce un metodo, ogni classe che implementa quell'interfaccia DEVE sovrascrivere quel metodo, che garantisce che quella classe avrà la sua versione di quel metodo. – Hassan
spero che il tuo professore non debba leggere questa domanda. :) – Dhananjay