2017-05-11 1 views
0

J'ai une classe Accommodation comme suit:C# champs à inclure dans le constructeur paramétrés, d'une classe qui a dérivé d'une autre classe qui a dérivé de classe abstraite

class Accommodation { 
    int accommodationNo 
    String address1 
    String address2 
    String postcode 
    double valuation 
    double rent 
    int noRentPaymentsPerYe 
} 

classe Housing étend Accommodation:

class Housing : Accomodation { 
    String type 
    int noBedrooms 
    int noCarParkingSites 
} 

Et la classe Flat étend Housing:

class Flat : Housing { 
    double maintenanceCharge 
} 

Lors de la création d'un constructeur avec les paramètres de la classe Flat, dois-je inclure tous les champs jusqu'à Accommodation? Un exemple de constructeur avec des paramètres de classe Flat serait très apprécié.

+1

Je crois que cela prendra 1 minute pour vérifier cela dans IDE –

Répondre

1

Oui, vous devez inclure chaque champ et le transmettre dans la chaîne des constructeurs (il s'agit d'une abréviation des champs car seul un couple par classe est nécessaire pour démontrer - vous devez ajouter vos champs supplémentaires):

public abstract class Accommodation { 
    private int accommodationNo; 
    private String address1; 
    protected Accomodation(int acomNo, string addr1) { 
     this.accomodationNo = acomNo; 
     this.address1 = addr1; 
    } 
} 
public class Housing { 
    private String type; 
    private int noBedrooms; 
    public Housing(int acomNo, string addr1, string typ, int noBeds) 
      : base(acomNo, addr1) { 
     this.type = typ; 
     this.noBedrooms = noBeds; 
    } 
} 
public class Flat { 
    double maintenanceCharge; 
    public Flat(int acomNo, string addr1, string typ, int noBeds, double maintCharge) 
      : base(acomNo, addr1, typ, noBeds) { 
     this.maintenanceCharge = maintCharge; 
    } 
}