когда мы создаем этот тип объекта в C # ...? - PullRequest
0 голосов
/ 18 мая 2009

Я видел следующий тип сценария на некоторых веб-сайтах. Кто-нибудь может мне помочь, когда мы точно используем этот тип сценария ...?

class emp
{

    public void add()
    {
        MessageBox.Show("Emp class");
    }
}

class dept : emp
{
    public void disp()
    {
        MessageBox.Show("dept class");
    }
}

emp ee = new dept();

Я просто хочу знать, когда мы создадим этот тип объекта emp 'ee = new dept ()' вместо 'emp ee = new emp ()' Спасибо, шива

Ответы [ 6 ]

8 голосов
/ 18 мая 2009

Пример выше демонстрирует наследование. Наследование - это отношение «IS A», в данном случае «dept» IS «emp», что означает, что всякий раз, когда ваш код использует emp, он также должен иметь возможность использовать объект dept.

Назначение нового отдела для ee демонстрирует, что dept является emp, даже если он может добавлять дополнительные функции, такие как метод disp.

2 голосов
/ 18 мая 2009

Показанный здесь процесс называется наследованием.

В основном делается то, что тип переменной ee объявлен как тип emp; это допустимо, потому что тип dept имеет отношение is-a к emp (говоря вслух, это "dept - это тип emp").

Вы можете сделать это, если хотите принять любую переменную, которая наследуется от emp (как обозначено объявлением class dept : emp), в качестве параметра некоторого вида.

0 голосов
/ 18 мая 2009

Мы делаем это для полиморфизма во время выполнения. Когда нам нужно вызвать метод производного класса, но какой производный класс необходимо вызвать, зависит от времени выполнения на основе пользовательского ввода. Это очень простой пример:

static void Main(string[] args)
        {
            List<Shape> shapes = new List<Shape>();
            shapes.Add(new Circle());
            shapes.Add(new Square());
            shapes.Add(new Rectangle());

            foreach (Shape s in shapes)
                s.Draw();

            Console.Read();
        }

public class Shape
    {
        public virtual void Draw() { }

    }

    public class Square : Shape
    {
        public override void Draw()
        {
            // Code to draw square
            Console.WriteLine("Drawing a square");
        }
    }

    public class Circle : Shape
    {
        public override void Draw()
        {
            // Code to draw circle
            Console.WriteLine("Drawing a circle");

        }
    }

    public class Rectangle : Shape
    {
        public override void Draw()
        {
            // Code to draw circle
            Console.WriteLine("Drawing a rectangle");

        }
    }

*****Output:
Drawing a circle
Drawing a square
Drawing a rectangle*****

В практическом сценарии пользователь может определить во время выполнения, какую фигуру он хочет нарисовать. Таким образом, при реализации вы должны создать объект класса Shape и назначить ему Circle, Rectangle или Square в зависимости от выбора пользователя (переключателем или if-else). И когда вы вызываете Shape.Draw (), он вызывает соответствующий метод производного класса.

0 голосов
/ 18 мая 2009

Вам нужно создать этот объект, если вы хотите использовать оба метода производного класса, а также методы базового класса.

0 голосов
/ 18 мая 2009

Это явно наследство ..

В Inheritance U нужно создать этот объект, если вы хотите использовать оба метода производного класса, а также методы базового класса.

Надеюсь, это было полезно

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