2014-11-16 2 views
-6

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

Мне просто нужна помощь, чтобы изменить методы в классе, чтобы они работали как подходящие геттеры и сеттеры для атрибутов скорости и температуры. Используйте те же значения, что и на приведенном ниже выходе, скорость 50 и температура 70,5. Измените методы setSpeed ​​(), getSpeed ​​(), setTemp() и getTemp().

Создать объект автомобиля, называемый ford. Установите скорость как для скорости, так и для темпа, используя сеттеры. Распечатайте значения скорости и температуры с помощью геттеров.

using System; 
using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 

namespace Assignment13 { 
    class Car { 
     int Speed = 50; 
     double Temp =70.5; 

     private int Speed; 

     public void setSpeed(int speed) { 
      this.Speed = 0; 
     } 

     public int getSpeed() { 
      return Speed; 
     } 

     private int Temp; 

     public void setTemp() { 
      this.Temp = 0; 
     } 

     public int getTemp() { 
      return Temp; 
     } 
    } 

    class Program { 
     static void Main(string[] args) { 
      Car ford = new Car(); 

      ford.setSpeed(65); 
      ford.setTemp(120); 

      Console.WriteLine("Speed = " + ford.getSpeed()); 
      Console.WriteLine("Temp = " + ford.getTemp()); 

      Console.Write("Hit any key to close"); Console.ReadKey(true); 
     } 
    } 
} 
+2

Вы всегда установить температуру до 0 ... Плюс, вы не уважаете верблюжьего – Dici

+0

Почему ты есть методы get и set вместо свойств? Ваш преподаватель дал вам имена setSpeed ​​(), getSpeed ​​() или это ваше изобретение? –

+0

Что касается ошибки, это просто и просто: никакой перегрузки для метода setTemp не принимает 1 аргумент. Сколько аргументов имеет setTemp? (никто). Сколько вы предоставляете, когда называете это? (1). Как вы можете не справиться с этим? –

ответ

0

Класс представляет собой абстракцию вещей. Всякий раз, когда вы проектируете класс, вы должны убедиться, что следующие (другие могут добавить, если я пропустил что-нибудь):

  1. Убедитесь, что все данные и операции которые связаны осенью в том же классе.
  2. НЕ ОТКРЫВАЙТЕ внутренности класса во внешний мир. Вместо этого предоставляет интерфейс для использования этого класса.
  3. Если определить какой экземпляр переменной проверки, если он следует за имеет-отношения
  4. Если вы наследовать класс от какой-то супер проверки класса, если он следует за это-отношения
0
using System; 
    using System; 
    using System.Collections.Generic; 
    using System.Linq; 
    using System.Text; 
    namespace Assignment13 
    { 
    class Car 
{ 
    int speed = 0; 
    double temp =0; 

    private int Speed; 

    public void setSpeed(int speed) 
    { 
     this.speed = 50; 
    } 
    public int getSpeed() 
    { 
     return speed; 
    } 

    private double Temp; 
    public void setTemp(double temp) 
    { 
     this.temp = 70.5; 
    } 
    public double getTemp() 
    { 
     return temp; 
    } 
} 
class Program 
{ 

    static void Main(string[] args) 
    { 
     Car ford = new Car(); 
     ford.setSpeed(50); 
     ford.setTemp(70.5); 
     Console.WriteLine("Speed = " + ford.getSpeed()); 
     Console.WriteLine("Temp = " + ford.getTemp()); 

     Console.Write("Hit any key to close"); Console.ReadKey(true); 
    } 
} 

}

0
  1. вы определили два «Скорость» переменные в классе, но вы можете только де clare имя переменной один раз для каждой области.

    int Speed = 50; 
    double Temp =70.5; 
    
    private int Speed; 
    
  2. сеттеры используются для присвоения значений, и они всегда должны иметь один аргумент, и этот аргумент должен использоваться для присвоения переменной экземпляра или класса. Вот исправленная версия «setSpeed».

    public void setSpeed(int speed) 
    { 
        this.speed = speed; 
    } 
    

В этом случае, вы игнорируете ваш параметр «скорость» и назначая this.speed к постоянному значению. Такое назначение по умолчанию должно выполняться в конструкторе.

  1. Этот сеттер является источником вашей ошибки: у вас есть сеттер без параметров, который должен быть красным. В этом случае, вы должны добавить 1 параметр, «Темп» в setTemp():

    public void setTemp(double temp) { 
        this.Temp = temp; 
    } 
    
Смежные вопросы