Как организовать иерархию интерфейсов классов? - PullRequest
1 голос
/ 21 апреля 2011

Поскольку вы можете выполнять множественное наследование с интерфейсами классов, соблюдаете ли вы некоторые конкретные правила для их создания и организации, например, чтобы избежать наложения интерфейсов?

Ответы [ 3 ]

4 голосов
/ 21 апреля 2011

Java (по крайней мере, до Java 7) не поддерживает множественное наследование реализации, только множественное наследование интерфейса.Я полагаю, вы имеете в виду такую ​​ситуацию:

public class Overlapping {

    interface A {
        void myMethod();
    }

    interface B {
        void myMethod();
    }

    static class C implements A, B {
        public void myMethod() {
            System.err.println("it works!");
        }
    }

    public static void main(String[] args) {
        new C().myMethod();
    }
}

Это не проблема (это работает!).Если API перекрывается, он просто сливается.

Здесь - полезная статья о множественном наследовании в Java.

1 голос
/ 21 апреля 2011

Общее правило, которому я следую, - Разделение проблем : каждый интерфейс должен моделировать только один точный аспект или функциональность, таким образом, вы можете наследовать несколько интерфейсов, не сталкиваясь с проблемами.Вы можете также прочитать этот вопрос и связанные с ним ответы.

1 голос
/ 21 апреля 2011

Я думаю, вы говорите о таких вещах:

interface I1 {
   void methodName ();
}

interface I2 {
   void methodName (); //same method name
}

public Class MyClass implements I1, I2 {...}

Я не знаю никаких конкретных правил для такой ситуации, потому что они очень редки. (Не так как в C #, есть конструкция (явная реализация интерфейса) для этого "use" -case).

По моему скромному мнению, этот случай является и должен быть очень и очень редким. Просто попытайтесь избежать этого ( / удерживать это так ). Так что это скорее академическая, а не практическая проблема.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...