Наследование и static поля - C#

Узнай цену своей работы

Формулировка задачи:

Не могу понять почему так происходит. Создаю класс Ship с одним public static свойством. Создаю два класса наследника Fighter и Destroyer. Вывожу на консоль значение поля weapon для каждого класса (по умолчанию ноль). Меняю значение поля weapon для класса Ship и значение поля weapon меняется и у наследников (Можно поменять значение поля и у кого-нибудь из наследников, ничего не поменяется. Все классы, в том числе и родитель тоже будут иметь новое значение поля).

Почему?

Подскажите кто знает.
class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine(Ship.weapon);
        Console.WriteLine(Fighter.weapon);
        Console.WriteLine(Destroyer.weapon);
        Console.ReadLine();
 
        Ship.weapon = 10;
        Console.WriteLine(Ship.weapon);
        Console.WriteLine(Fighter.weapon);
        Console.WriteLine(Destroyer.weapon);
        Console.ReadLine();
    }
}
class Ship
{
    public static int weapon;
}
class Fighter : Ship { }
class Destroyer : Ship { }

Решение задачи: «Наследование и static поля»

textual
Листинг программы
using System;
using System.Management;
using System.Collections.Generic;
 
public class Sample
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine(Ship.weapon);
            Console.WriteLine(Fighter.weapon);
            Console.WriteLine(Destroyer.weapon);
            Console.ReadLine();
        }
    }
    abstract class Ship
    {
        public const int weapon=0;
    }
    class Fighter : Ship
    {
        public new const int weapon=10;
    }
    class Destroyer : Ship 
    {
        public new const int weapon = 15;
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 3.929 из 5
Похожие ответы