абстрактные классы в C # - PullRequest
2 голосов
/ 24 мая 2011

Я хочу создать абстрактный класс в C #. В настоящее время у меня есть этот класс в C #:

public class CreditReportViewModel
{
    public Person Person { get; set; }       
    public DateTime ReportDate { get; set; }
    public string PersonalAddress { get; set; }
    public string EmployerAddress { get; set; }
}

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

Пожалуйста, предложите.

Ответы [ 4 ]

5 голосов
/ 24 мая 2011

Все, что вам нужно сделать, это пометить класс как abstract:

public abstract class CreditReportViewModel
{
    public Person Person { get; set; }       
    public DateTime ReportDate { get; set; }
    public string PersonalAddress { get; set; }
    public string EmployerAddress { get; set; }
}
4 голосов
/ 24 мая 2011

Единственное, что нужно для создания класса abstract, - это добавить ключевое слово:

public abstract class CreditReportViewModel
{
    public Person Person { get; set; }       
    public DateTime ReportDate { get; set; }
    public string PersonalAddress { get; set; }
    public string EmployerAddress { get; set; }
}

В этом случае для реализации классов не нужно добавлять какие-либо дополнительные реализации:

class Derived : CreditReportViewModel { }

Если вы также хотите сделать членов abstract, то же самое можно сделать и здесь:

public abstract class CreditReportViewModel
{
    public Person Person { get; set; }       
    public DateTime ReportDate { get; set; }
    public string PersonalAddress { get; set; }
    public string EmployerAddress { get; set; }
    public abstract float MakeSomeCalculation();
}

public class Derived : CreditReportViewModel
{
    public override float MakeSomeCalculation()
    {
         // This method must be implemented in the derived class
    }
}

Типичным случаем является то, что базовый класс abstract предоставляет некоторые члены abstract, которые должны бытьреализуется производными классами.

2 голосов
/ 24 мая 2011

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

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

1 голос
/ 24 мая 2011

да, вам нужно поместить абстрактное ключевое слово, например

public abstract class CreditReportViewModel
{
    public Person Person { get; set; }       
    public DateTime ReportDate { get; set; }
    public string PersonalAddress { get; set; }
    public string EmployerAddress { get; set; }
}

, но я не думаю, что действительная причина вы должны сделать вышеупомянутый класс абстрактным.

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