Java ve C# sınıflarında alanların fazla çalışmadığını (ancak yöntemlerin) bilmiyorum. Bu gerçeği biliyorum, ancak böyle bir uygulamada nedenini anlayamıyorum. Tahmin edilebilir ve açık değildir. Neden böyle bir OOP uygulaması var?Sınıf alanları neden geçersiz kılmıyor
public class Flight {
int seats = 150;
}
public class CargoFlight extends Flight {
int seats = 12;
}
CargoFlight f1 = new CargoFlight();
System.out.println(f1.seats);
Flight f2 = new CargoFlight();
System.out.println(f2.seats);
Ve:
class Flight
{
public int Seats = 150;
}
class CargoFlight : Flight
{
public int Seats = 20;
}
class Program
{
static void Main(string[] args)
{
CargoFlight f1 = new CargoFlight();
Console.WriteLine(f1.Seats);
Flight f2 = new CargoFlight();
Console.WriteLine(f2.Seats);
Console.ReadLine();
}
}
Geçersiz kılma * davranış *, * durumu * konusunda uzmanlaşmaya yöneliktir. İki değişkeni ayrı ayrı ilan etmek garip olurdu ama sadece bir parça devlet IMO ile bitti. Gerçekten aradığınız şey, mevcut duruma bir * atama * ve kolayca başarılabilir. –
bu nasıl geçersiz kılıyor? sadece yeni değerler atarız ..... genellikle davranışları geçersiz kılar, çünkü birçok kez türetilmiş sınıf için fark davranışını istiyoruz ... davranışları sınıftaki yöntemlerle ilişkilendirebilirsiniz ... – Viru
'sadece yeni değerler atamak' - Yapıyoruz. * 2 farklı alan ilan ediyorsun, biri diğerini gölgeliyor. İsterseniz yeni bir değer atayabilirsiniz. Bunu durdurmak için hiçbir şey yok. – sisyphus