Это зависит от действий. Как они связаны? Это то, что у вас есть несколько объектов, которые делают одно и то же, но немного по-разному? Например, предположим, у меня есть метод, который должен печатать документ, но я хочу, чтобы тот же метод печатал файлы pdf и doc.
Если ваша ситуация похожа на эту, то вы можете рассмотреть возможность использования наследования следующим образом: создайте суперкласс, в моем примере давайте назовем его Document с методом print (). Метод печати не должен ничего делать. Затем создайте подкласс для каждого типа документа, чтобы я в итоге получил подкласс PdfDocument и DocDocument. Каждый из них предоставит реализацию для print (), которая может печатать тип документа, к которому он относится.
Тогда метод, который я напишу, будет:
public void printDocument(Document d){
d.print();
}
То есть, нацеливаясь на тип суперкласса, мне не нужно беспокоиться о конкретных действиях, которые выполняет каждый тип документа. Таким образом я избегаю кода, который проверяет тип объекта, который передается моему методу. Это делает код более надежным для будущего расширения.