Страницы

Поиск по вопросам

среда, 27 ноября 2019 г.

Правильно ли в книге написаны примеры

#c_sharp


Здравствуйте! Начал заниматься по книге C# для школьников и столкнулся сразу же с
трудностью. А именно в примерах, которые приводят в книге не понятно почему подчёркивается
всё красной линией и не работает.

Допустим этот пример:



using System;
class Animal
{
    public string kindOfAnimal;
    public string name;
    public int numberOfLegs;
    public int height;
    public int length;
    public string color;
    bool hasTail;
    protected bool isMammal;
    private bool spellingCorrect;
}

class Zoo
{
    public void GetAnimal()
    {
        Animal a = new Animal();
        a.kindOfAnimal = "Kangaroo";
        a.isMammal = false;
        a.spellingCorrect = true;
    }
}


А вот так правильно? Насколько я понял, мне сейчас подчёркивает две строки:

a.isMammal = false;
a.spellingCorrect = true;


Так как они protected и private? Так?

А вот скриншот из книги. Она называется C# для школьников.


    


Ответы

Ответ 1



Да, пример в книге неправильный. Это и не должно работать. Смотрите. Что такое класс, по сути? Это описание объекта, которое содержит данные и действия (которые называют обычно код). Код в классе лежит не весь одной кучей, а кусками (они называются функции или методы). В вашем примере код лежит просто в классе: class Zoo { Animal a = new Animal(); a.kindOfAnimal = "Kangaroo"; a.isMammal = false; a.spellingCorrect = true; } Но его нужно уложить в функцию, чтобы потом можно было этот кусок кода вызвать: class Zoo { public Animal CreateAnimal() { Animal a = new Animal(); a.kindOfAnimal = "Kangaroo"; a.isMammal = false; a.spellingCorrect = true; return a; } } В этом случае можно будет заставить этот кусок кода выполниться: Zoo zoo = new Zoo(); Animal kangaroo = zoo.CreateAnimal(); Обновление: Да, присвоение полям isMammal и spellingCorrect тоже не должно работать. Обращаться «снаружи» можно лишь к публичным (то есть, открытым) данным.

Ответ 2



Для примера возьмем 2 класса: Animal и Elephant class Animal{} class Elephant{} Экземпляр класса Animal можно создать и поместить в поле класса Elephant, но просто выполнять операторы непосредственно внутри класса (т. е. вне методов, конструкторов, свойств и т. д.) - нельзя. class Animal { public string Name; } class Elephant { Animal elephant = new Animal(); elephant.Name = "Слон Микки"; //Нельзя } К членам класса Animal (методы, поля и т.д) вы можете обращаться через конструкторы, методы, события и т.д. Например: class Animal { public string Name; } class Elephant { Animal animal = new Animal(); public void GetName() { animal.Name = "Слон"; } } Описал как можно кратко. Книгу, которую читаете Вы - сожгите :) Советую для чтения книги, которые описаны: тут Удачного кодинга...

Ответ 3



Почему все напали на пример. Он в книге абсолютно верный. Или мы читать разучились? Там же красным по белому написано, что две следующие строки не будут выполнены. Они как раз и говорят, что так писать не получится.

Комментариев нет:

Отправить комментарий