No VS 2013 ao criar a classe usando derivação:
class PosicaoGPScomLeitura : ClassePosicaoGPS
{
private readonly DateTime dataLeitura;
public PosicaoGPScomLeitura(double lat, double lng, DateTime dt)
{
this.dataLeitura = dt;
}
public override string ToString()
{
return "Classe: PosicaoGPScomLeitura\nLatitude: " + latitude + "\nLongitude: " + longitude + "\nHemisferio Norte? " + isHemisferioNorte() + "\nData da Leitura: " + dataLeitura;
}
}
class ClassePosicaoGPS : IGPS //implementa a interface IGPS
{
public double latitude;
public double longitude;
//usando construtor
public ClassePosicaoGPS(double lat, double lng)
{
latitude = lat;
longitude = lng;
}
public ClassePosicaoGPS() { } // construtor sem parâmetros
public override string ToString()
{
return "Classe: ClassePosicaoGPS\nLatitude: " + latitude + "\nLongitude: " + longitude + "\nHemisferio Norte? " + isHemisferioNorte();
}
public bool isHemisferioNorte() //implementação do método da interface IGPS. Obrigatório
{
return latitude > 0; //latitude maior q zero = norte
}
}
E instanciá-la assim:
PosicaoGPScomLeitura pos3 = new PosicaoGPScomLeitura(10.4, 20.2, DateTime.Now);
Retorna:
Classe: PosicaoGPScomLeitura
Latitude: 0
Longitude: 0
Hemisferio Norte? False
Data da Leitura: 11/01/2019 14:08:05
A latitude e longitude ficaram com valores zerados. No código-fonte, não há definição dos valores de latitude e longitude no construtor de PosicaoGPScomLeitura
mas na video aula, a classe funcionou corretamente, atribuindo valores à latitude e longitute. Como o compilador fez isso? É alguma "feature" nova do VS2017?