HorstWessel, 1. если я добавлю метод к классу, надо ли мне будет перекомпилировать приложение? 2. могу ли я в процессе исполнения программы изменить реализацию метода родительского класса? 3. является ли класс объектом?
1. нет. 2. не совсем однозный вопрос... изменить реализацию означает загрузить во время выполнения другую реализацию или во время выполнения сгенерить програмнный код, откомпилировать и загрузить? хотя возможны оба варианта. ответ да. 3. да. методы и данные могут быть доступны по ссылке на класс, то есть что бы к ним добраться не нужно создавать экземпляр.
AlTk, Java вообще по своей природе динамическая... в Java это назывют reflection. Но этот раздел предназанчен для реализации API, прикладные программисты не должы увлекаться этим инструментом. Прикладники впрыскивают реализации несколько иным способом - более декларативным.
В .Net тоже есть reflection: Assembly SampleAssembly; SampleAssembly = Assembly.LoadFrom("c:\\Sample.Assembly.dll"); // Obtain a reference to a method known to exist in assembly. MethodInfo Method = SampleAssembly.GetTypes()[0].GetMethod("Method1"); // Obtain a reference to the parameters collection of the MethodInfo instance. ParameterInfo[] Params = Method.GetParameters(); // Display information about method parameters. // Param = sParam1 // Type = System.String // Position = 0 // Optional=False foreach (ParameterInfo Param in Params) { Console.WriteLine("Param=" + Param.Name.ToString()); Console.WriteLine(" Type=" + Param.ParameterType.ToString()); Console.WriteLine(" Position=" + Param.Position.ToString()); Console.WriteLine(" Optional=" + Param.IsOptional.ToString()); } то же самое с перебором в foreach классов, методов, свойств и т.д.