Здравствуйте, vsb, Вы писали:
vsb>java: types test.Test.I1 and test.Test.I2 are incompatible;
vsb> class test.Test.TestClass inherits unrelated defaults for method() from types test.Test.I1 and test.Test.I2
Это как раз
не работает.
vsb>vsb> static class TestClass implements I1, I2 {
vsb> @Override
vsb> public void method() {
vsb> I1.super.method();
vsb> }
vsb> }
vsb>
vsb>работает
А так и в Шарпе работает. Ты тупо объявил публичную функцию, которая переопределила дефолтную реализацию для обоих классов.
using System;
public class HelloWorld
{
static void Main(string[] args)
{
var obj = new TestClass();
obj.Method();
I1 i1 = obj;
i1.Method();
I2 i2 = obj;
i2.Method();
}
}
interface I1
{
void Method()
{
Console.WriteLine("I1");
}
}
interface I2
{
void Method()
{
Console.WriteLine("I2");
}
}
class TestClass : I1, I2
{
public void Method()
{
Console.WriteLine("TestClass");
}
}
Ожидаемо выведет:
TestClass
TestClass
TestClass
Если в коде выше убрать публичный метод, то вызвать obj.Method(), а с кастом к интерфейсу прокатит.