Hi,
kleiner Exkurs zu C#, auch wenns ein Java-Forum ist
Ein Freund von mir hat gefragt, warum der Konstruktor der Superklasse auch ohne expliziten Base-Aufruf beim Aufruf der Unterkonstruktor aufgerufen wird. Bisher dachte ich, dass mit alleiniger Deklaration eines Unterklassen-Konstruktors der Oberkonstruktor überschrieben wird... habs dann mal aus Eigeninteresse ausprobiert und siehe da:
Ergibt:
Test wurde aufgerufen
Test2 wurde aufgerufen
Ganz ohne Base-Aufruf?!
Wie überdecke ich denn dann den Konstruktor der Superklasse komplett?
Macht dann base() überhaupt noch Sinn? (Wenn man davon absehen will, dem Superkonstruktor statische Werte mitzuschieben)
kleiner Exkurs zu C#, auch wenns ein Java-Forum ist
Ein Freund von mir hat gefragt, warum der Konstruktor der Superklasse auch ohne expliziten Base-Aufruf beim Aufruf der Unterkonstruktor aufgerufen wird. Bisher dachte ich, dass mit alleiniger Deklaration eines Unterklassen-Konstruktors der Oberkonstruktor überschrieben wird... habs dann mal aus Eigeninteresse ausprobiert und siehe da:
Java:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
new Test2();
Console.ReadKey(true);
}
}
public class Test {
public Test() {
Console.WriteLine("Test wurde aufgerufen");
}
}
public class Test2 : Test {
public Test2() {
Console.WriteLine("Test2 wurde aufgerufen");
}
}
}
Ergibt:
Test wurde aufgerufen
Test2 wurde aufgerufen
Ganz ohne Base-Aufruf?!
Java:
public class Test2 : Test {
public Test2() : base() {
Console.WriteLine("Test2 wurde aufgerufen");
}
}
Wie überdecke ich denn dann den Konstruktor der Superklasse komplett?
Macht dann base() überhaupt noch Sinn? (Wenn man davon absehen will, dem Superkonstruktor statische Werte mitzuschieben)