Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Переопределение методов и наследование

86K
25 ноября 2012 года
Gxxx
1 / / 25.11.2012
Помогите, плиз, понять, в чем загвоздка в этом нубском вопросе.
Результат получается таким:
---
Класс B 20
10
---
Почему значение переменой x для Console.WriteLine(_A.x) = 10, а _A.Z() = 20?


Код:
using System;

namespace Project1
{
    public class A
    {
        public int x = 10;
        public virtual void Z()
        {
            Console.WriteLine("Класс A " + x);
        }
    }

    public class B:A
    {
        public new int x = 20;
        public override void Z()
        {
            Console.WriteLine("Класс B " + x);
        }
    }

    public class C
    {
        static void Main()
        {
            A obA = new A();
            B obB = new B();
            A _A = obB;
            _A.Z();
            Console.WriteLine(_A.x);
            Console.ReadKey();
        }
    }
}
40K
25 ноября 2012 года
D129
228 / / 18.04.2012
Потому, что так и должно быть. :-)
Вы же создали обьект Б. в нем функция переопределена.
присвоили его ссылке типа А.
Но функция то осталась переопределенной.

По существу, это самая нужная часть механизма наследования.

Вы можете наопределять сколько угодно потомков - разных видов солдатиков, например - , и переопределить в них функцию их отображения на экране.
А "экрану"каждого отдать как базового "солдат" ика. А экран будет в нужное время вызывать функцию "нарисуй меня" - без знкомства с конкретной реализацией.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог