2017-02-08 3 views
-3

Я пытаюсь сделать код, основанный на абстрактных методах и классах на C#, но я не могу понять, почему мой код не работает.Аннотация Метод и классы C#

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

namespace ConsoleApplication16 
{ 
    abstract class ICTcampus 
    { 
     public int addNumbers(int number1, int number2) 
     { 
      return number1 + number2; 
     } 

     public abstract void multiplyNumbers(int number1, int number2) 
     { 

     } 

     public class Derivedclass : ICTcampus 
     { 
      public override int multiplyNumbers(int number1, int number2) 
      { 
       return number1 * number2; 
      } 
     } 

     class Program 
     { 
      static void Main(string[] args) 
      { 

       Derivedclass obj = new Derivedclass(); 
       int add = obj.addNumbers(2, 3); 
       Console.Write(" addition is :{0}", add); 
       // Console.Write(" multiplication is :{0}", obj.multiplyNumbers(2, 3)); 

      } 
     } 
    } 
} 
+6

«Не работает» не очень хорошее описание проблемы. Попробуйте описать, какова ваша фактическая проблема. –

+0

В методах C# 'abstract' не может быть тела (' {} '). Если вы хотите иметь функцию с телом, она должна быть 'virtual' – FCin

+1

в тезисах нет кодовых тел ... удалить скобки .... public abstract void multiplyNumbers (int number1, int number2); И ваш переопределяет возвращает int, когда adstract недействителен! – Wheels73

ответ

2

Рабочий код

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
namespace ConsoleApplication16 
{ 
    public abstract class ICTcampus 
    { 
     public int addNumbers(int number1, int number2) 
     { 
      return number1 + number2; 
     } 

     public abstract int multiplyNumbers(int number1, int number2); 

    } 
    public class Derivedclass : ICTcampus 
    { 
     public override int multiplyNumbers(int number1, int number2) 
     { 
      return number1 * number2; 
     } 
    } 

    class Program 
    { 
     static void Main(string[] args) 
     { 

      Derivedclass obj = new Derivedclass(); 
      int add = obj.addNumbers(2, 3); 
      Console.Write(" addition is :{0}", add); 
      // Console.Write(" multiplication is :{0}", obj.multiplyNumbers(2, 3)); 

     } 
    } 

} 
2

Это потому, что ваша функция multiplynumber не должна быть абстрактной, но виртуальной. Если вы хотите оставить его абстрактный, то вы должны удалить скобки и удалить его пустую реализацию