Здравствуйте, c-smile, Вы писали:
CS>Это не ко мне и не здесь:
CS>на news.digitalmars.com есть соотв. группа там имеет смысл спросить.
CS>Мой ответ — не знаю — надо разбираться и вдумываться — может оно так и надо .
Ну, вот. А я уже было задумался о внесении предложения о создании отдельного форума для Ди.
... << RSDN@Home 1.1.4 beta 7 rev. 466>>
В связи с напором рекламы
начал потихоньку тыкать D, и натЫкнулся на интересный момент:
1. Объявляем в интерфейсе метод с уровнем доступа public, а в классе реализуем его с уровнем доступа protected — D молча компилит, но если попробуем public -> private или protected -> private — компилятор ругается, что интерфейс не определен.
module test;
interface ITest
{
public char[] ToString();
}
class Test: ITest
{
public: this() {}
protected char[] ToString()
{
return "class Test\n";
}
}
int main(char[][] args)
{
Test t = new Test();
ITest i = cast(ITest)(t);
printf(i.ToString());
return 0;
}
2. Объявляем в интерфейсе метод с уровнем доступа private (
), в классе его вообще не реализуем — компилиться на ура.
module test;
interface ITest
{
private char[] ToString();
public char[] XToString();
}
class Test: ITest
{
public: this() {}
public char[] XToString()
{
return "class Test\n";
}
}
int main(char[][] args)
{
Test t = new Test();
ITest i = cast(ITest)(t);
printf(i.XToString());
return 0;
}
Возникает вопрос — это баги или фичи? Шарп такое вроде не позволяет, но с другой стороны, наверно с этим можно чего-нить полезное сделать
Здравствуйте, LIS, Вы писали:
Это не ко мне и не здесь:
на news.digitalmars.com есть соотв. группа там имеет смысл спросить.
Мой ответ — не знаю — надо разбираться и вдумываться — может оно так и надо
.