Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
3 / 3 / 1
Регистрация: 26.11.2013
Сообщений: 30

Объясните, пожалуйста, создание экземпляра класса в примере

18.09.2016, 13:22. Показов 1721. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день, имеем пример кода:

Кликните здесь для просмотра всего текста
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
using System;
 
// Абстрактный класс может быть унаследован от конкретного класса.
 
namespace Abstraction
{
    // Конкретный класс A.
    class ConcreteClassA
    {
        public void Operation()
        {
            Console.WriteLine("ConcreteClassA.Operation");
        }
    }
 
    // Абстрактный класс.
    abstract class AbstractClass : ConcreteClassA
    {
        public abstract void Method();
    }
 
    // Конкретный класс B.
    class ConcreteClassB : AbstractClass
    {
        public override void Method()
        {
            Console.WriteLine("ConcreteClassB.Method");
        }
    }
 
    class Program
    {
        static void Main()
        {
            AbstractClass instance = new ConcreteClassB();
            Int32 a = new Int16();
            a = 100;
            Console.WriteLine(a + "\n" + a.GetType());
            Console.WriteLine(new string('=', 50));
            instance.Method();
            instance.Operation();
            Console.WriteLine(instance);
            // Delay.
            Console.ReadKey();
        }
    }
}



Не могу понять почему на строке 35 мы создаем экземпляр класса ConcreteClassB
А на 36 строке экземпляр класса Int32?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
18.09.2016, 13:22
Ответы с готовыми решениями:

Пожалуйста объясните, что такое сборка на простом примере
Здравствуйте товарищи специалисты. Почитал статейки про сборки, и ни как в голове не укладывается, что это такое. Вот например есть ехе...

Создание экземпляра класса-наследника для переменной с типом базового класса
Подскажите чайнику как создается экземпляр класса BC BaseClass BC = new DerivedClass(); Вопрос: BC - это экземпляр класса BaseClass...

Создание экземпляра класса
Народ, можете пожалуйста доходчиво объяснить в чем разница. есть, например, класс class MyClass { public...

6
 Аватар для UseMuse
154 / 154 / 60
Регистрация: 11.01.2016
Сообщений: 1,325
18.09.2016, 13:50
Лучший ответ Сообщение было отмечено Ruslan1 как решение

Решение

Ruslan1,
Цитата Сообщение от Ruslan1 Посмотреть сообщение
Не могу понять почему на строке 35 мы создаем экземпляр класса ConcreteClassB
// Абстрактный класс может быть унаследован от конкретного класса.
Тема такая. Создали мы экзмепляр класса ConcreteClassB и привели к базовому типу AbstractClass.
на 40 строке вызвали реализацию абстрактного метода.
на 41 строке мы вызываем унаследованную операцию ConcreteClassA.
Этот пример показывает, что абстрактные классы позволяют не только от них наследоваться, но они могут и сами наследоваться как от абстрактных классов так и от конкретных классов.

Цитата Сообщение от Ruslan1 Посмотреть сообщение
А на 36 строке экземпляр класса Int32?
Опечатка наверное, на самом деле бессмысланая запись и вывод, не в тему, просто не обращай внимание
1
1123 / 794 / 219
Регистрация: 15.08.2010
Сообщений: 2,185
18.09.2016, 13:59
Лучший ответ Сообщение было отмечено Ruslan1 как решение

Решение

Цитата Сообщение от UseMuse Посмотреть сообщение
Опечатка наверное, на самом деле бессмысланая запись и вывод, не в тему, просто не обращай внимание
неправда ваша, очень даже в тему.

в случае с наследованием мы рассматриваем instance как AbstractClass. Однако фактическим типом является ConcreteClassB.
В случае с интами аналогичная запись Int32 a = new Int16(); поведет себя иначе. Фактический тип переменной будет именно Int32, а не 16, как могло бы показаться из аналогии с классами.
1
 Аватар для UseMuse
154 / 154 / 60
Регистрация: 11.01.2016
Сообщений: 1,325
18.09.2016, 14:04
Ruslan1,
Можно написать и так:
C#
1
ConcreteClassB instance = new ConcreteClassB();
но это не правильно было бы с точки абстрактного мышления.
Просто тогда нет смысл вводить абстракцию было.
Делом в том, что абстракция нужна для собирательного понятия и конкретика всёравно должна будет представиться абстракции.
Например у тебя есть конкретный класс машина.
Нужно будет сообщить кому-то, о своей машине данные. Вместо того, чтобы сообщать о своей машине конкретные данные: сколько колёс, какой двигатель.
Ты можешь просто привести свой конкретный класс к абстракции, BMW и одним собирательным словом грубо говоря, дать понять, что машина твоя конкретная, это BMW

Добавлено через 2 минуты
КОП,
Цитата Сообщение от Ruslan1 Посмотреть сообщение
Int32 a = new Int16();
не заметил разный тип интов
1
3 / 3 / 1
Регистрация: 26.11.2013
Сообщений: 30
18.09.2016, 14:06  [ТС]
КОП, то есть грубо говоря, если бы Int32 был бы абстрактным классом, то тип переменной а был бы Int16?
0
1123 / 794 / 219
Регистрация: 15.08.2010
Сообщений: 2,185
18.09.2016, 14:09
Цитата Сообщение от Ruslan1 Посмотреть сообщение
то есть грубо говоря, если бы Int32 был бы абстрактным классом, то тип переменной а был бы Int16?
Да, с маленьким уточнением. Int16 должен еще наследоваться от Int32
1
3 / 3 / 1
Регистрация: 26.11.2013
Сообщений: 30
18.09.2016, 14:13  [ТС]
КОП, Ага, понятно, спасибо ребята КОП, UseMuse,
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
18.09.2016, 14:13
Помогаю со студенческими работами здесь

Создание экземпляра класса
Как написать класс class Class1 Class1(int x1,int x2) { ........ } так чтобы при вызове

Динамическое создание экземпляра класса.
Есть программа. Как сделать что-бы пользователь вводил имя, а затем создавался экземпляр класса с таким же именем?

Динамическое создание экземпляра класса
Подскажите начинаюшему! Есть FileUpload, с помощью него я хочу отправить файл на почтовый ящик. string file5 =...

Создание экземпляра класса выдает ошибку
Учил по учебнику СИ Шарп так вот в начале были экземпляры класса делал по образцу не выходит , подскажите как их делать в последней...

Создание экземпляра класса из текстовой строки
Доброго времени суток, появилась проблема, подскажите, как решается. Допустим есть строка, которая принимает значение какого-то,...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере нетипового документа выдачи шин для спецтехники с табличной частью, разработанного в конфигурации КА2. Номеклатура. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru