Możesz ukryć dziedziczone tworzenie, wprowadzając nieprzeciążone Utwórz. Jak trzeba dwa przeciążone Tworzenie, można połączyć w jedno Tworzenie tych z opcjonalnym drugim parametrem:
TTest = class(TObject)
public
constructor Create(A:Integer; B: Integer = 0);
end;
To daje ostrzeżenie kompilatora, sygnalizując, że jesteś ukrywanie domyślnego konstruktora bez parametrów. Aby pozbyć się ostrzeżenia można zadeklarować konstruktor ukrycia tak:
TTest = class(TObject)
public
constructor Create(A:Integer; B: Integer = 0); reintroduce;
end;
lub, jeżeli nie jest to możliwe, można wprowadzić klasę pośrednią wprowadzenie utworzyć pierwszą, a następnie ostateczną klasę z przeładowanym drugim :
preTest = class(TObject)
public
constructor Create(A:Integer); reintroduce;
end;
TTest = class(preTest)
public
constructor Create(A,B:Integer);overload;
end;
Dlaczego chcesz? Co próbujesz osiągnąć? –
+1. Sądziłem, że o to pytano wcześniej, ale jedyne pytanie, które znalazłem, nie zostało wyrażone * prawie * tak zwięźle jak to. –
@Marjan Venema: To oczywiste, że chcę utworzyć standardową klasę, a moja klasa nie powinna mieć tego domyślnego konstruktora. – Javid