Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
13 / 13 / 11
Регистрация: 03.09.2011
Сообщений: 1,026
1

Интерфейсы и наследование - верно ли понята суть

30.08.2014, 14:28. Просмотров 1337. Ответов 3
Метки нет (Все метки)


Почитал про интерфейсы и их наследование, и вычитал что они являются аналогом наследования от нескольких классов.

Я правильно понимаю, что если класс создается на основе интерфейса, который был унаследован от другого интерфейса, то создаваемый класс на основе симбиоза этих двух интерфейсов, должен реализовать методы двух интерфейсов?
А так же при обращение через новый интерфейс(Который был создан из 2 ух), я правильно понимаю, что не смогу обращаться к классам в которых был реализован только один из интерфейсов?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.08.2014, 14:28
Ответы с готовыми решениями:

Интерфейсы - в чем их суть
В чем суть интерфейсов объясните пожалуйста. Добавлено через 19 минут А если быть точнее, то...

Верно ли усвоена суть AllocMemCount и AllocMemSize
Скажите пожалуйста, правильно ли я понял суть AllocMemCount и AllocMemSize. 1. Первая возвращает...

Интерфейсы. Наследование
Пожалуйста, люди, помогите. Возможно ли проверить принадлежит ли объект данному классу или...

Наследование и интерфейсы
Один класс может реализовывать более одного интерфейса. А может ли один класс быть производным для...

3
Администратор
Эксперт .NET
9049 / 4324 / 744
Регистрация: 17.04.2012
Сообщений: 9,098
Записей в блоге: 14
30.08.2014, 14:57 2
Оба ваших предположения верны, но реализация интерфейса достаточно далека от наследования классов. Можно считать интерфейс контрактом между создателем типа, реализующего этот интерфейс и его пользователя.
Нужно, чтобы тип мог использоваться в foreach? - реализуем IEnumerable<T>
Нужна сериализация? - тогда ISerializable
Нужно то и другое одновременно - реализуем оба интерфейса. Понятно, что класс, использующий перечиселние и не использующий сериализацию нельзя использовать в обеих целях.
1
13 / 13 / 11
Регистрация: 03.09.2011
Сообщений: 1,026
31.08.2014, 11:01  [ТС] 3
tezaurismosis, Еще такой вопрос, а если я делаю класс на основе интерфейса, а потом наследую от это класса, то что бы пользоваться этим интерфейсом в новом классе, я должен еще указать, что я наследую интерфейс, помимо класса?
0
Администратор
Эксперт .NET
9049 / 4324 / 744
Регистрация: 17.04.2012
Сообщений: 9,098
Записей в блоге: 14
31.08.2014, 11:22 4
iluxa1810, самый лучший способ это узнать - проверить это и потом запомнить.
Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
using System;
 
namespace ConsoleApplication
{
    public class Animal : ICloneable
    {
        public object Clone() {
            Console.WriteLine("Мы не умеем клонировать любых животных");
            return null;
        }
    }
 
    public class Sheep : Animal
    {
 
    }
 
    class Program
    {
        static void Main(string[] args) {
            Sheep sheep = new Sheep();
            sheep.Clone(); // работает
        }
    }
}

Для изменения поведения метод можно переопределить (это вызывает хитрое поведение)
Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
using System;
 
namespace ConsoleApplication
{
    public class Animal : ICloneable
    {
        public object Clone() {
            Console.WriteLine("Мы не умеем клонировать любых животных");
            return null;
        }
    }
 
    public class Sheep : Animal
    {
        public new object Clone() {
            Console.WriteLine("Получилась Долли");
            return new Sheep();
        }
    }
 
    class Program
    {
        static void Main(string[] args) {
            Sheep sheep = new Sheep();
            sheep.Clone(); // Получилась Долли
            ((ICloneable)sheep).Clone(); // Мы не умеем клонировать любых животных
        }
    }
}

или заново реализовать интерфейс
Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
using System;
 
namespace ConsoleApplication
{
    public class Animal : ICloneable
    {
        public object Clone() {
            Console.WriteLine("Мы не умеем клонировать любых животных");
            return null;
        }
    }
 
    public class Sheep : Animal, ICloneable
    {
        public new object Clone() {
            Console.WriteLine("Получилась Долли");
            return new Sheep();
        }
    }
 
    class Program
    {
        static void Main(string[] args) {
            Sheep sheep = new Sheep();
            sheep.Clone(); // Получилась Долли
            ((ICloneable)sheep).Clone(); // Получилась Долли
        }
    }
}
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
31.08.2014, 11:22

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

Объясните суть задания. Верно ли оно выполнено?
#провести выборку значений функции в интервале с шагом 0.25 #результат записать в массив...

Интерфейсы или наследование
Добрый день, помогите с реализацией программы: Я хочу написать в консоли мини-игрушку. В ней...

Интерфейсы наследование классов
Нужно создать иерархию: класс C реализует интерфейс B и наследует класс D, B расширяет интерфейс A,...

Интерфейсы и множественное наследование
Доброго времени! Ковыряю свою задачу, где лучшим образом подошло бы множественное наследование....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.