C# C中类的两种使用方法#

C# C中类的两种使用方法#,c#,inheritance,C#,Inheritance,这个问题听起来很奇怪,为什么要贴出来,因为它在脑海中总是一个很大的困惑 下面是我使用继承的代码 class Program:Identity { static void Main(string[] args) { Identity id = new Identity(); Console.WriteLine(id.name); Console.WriteLine(id.age);

这个问题听起来很奇怪,为什么要贴出来,因为它在脑海中总是一个很大的困惑 下面是我使用继承的代码

class Program:Identity
    {
        static void Main(string[] args)
        {
            Identity id = new Identity();
            Console.WriteLine(id.name);
            Console.WriteLine(id.age);
            Console.WriteLine(id.DOB);
            Console.WriteLine(id.employed);
            Console.WriteLine(id.grade);
            Console.WriteLine(id.experience);
            Console.WriteLine(id.metric);
            Console.WriteLine(id.intermediate);
            Console.WriteLine(id.UG);
            Console.WriteLine(id.PG);
            Console.ReadKey();
        }
    }

    class Identity:Occupation
    {
        public string name{ get; set; }
        public int age { get; set; }
        public DateTime DOB { get; set; }
        public Identity()
        {
            name = "Mr. Xyz";
            age = 35;
            DOB = DateTime.Now.Date;
        }
    }

   class Occupation:Education
    {
        public string employed { get; set; }
        public string grade { get; set; }
        public int experience { get; set; }
        public Occupation()
        {
            employed = "employed-yes";
            grade = "B-Level";
            experience = 2;   
        }
    }

    class Education
    {
        public string metric { get; set; }
        public string intermediate { get; set; }
        public string UG { get; set; }
        public string PG { get; set; }
        public Education()
        {
            metric = "metric-yes";
            intermediate = "intermediate-yes";
            UG = "UG-yes";
            PG = "PG-No";
        }
    }
2.]现在使用外部类文件执行相同的代码

class Program
    {
        static void Main(string[] args)
        {
            Person p = new Person();
            p.set_values();
            Console.WriteLine(p.name);
            Console.WriteLine(p.age);
            Console.WriteLine(p.DOB);
            Console.WriteLine(p.employed);
            Console.WriteLine(p.grade);
            Console.WriteLine(p.experience);
            Console.WriteLine(p.metric);
            Console.WriteLine(p.intermediate);
            Console.WriteLine(p.UG);
            Console.WriteLine(p.PG);
            Console.ReadKey();
        }
    }
class Person
    {
        public string name;
        public int age;
        public DateTime DOB;
        public string employed;
        public string grade;
        public int experience;
        public string metric;
        public string intermediate;
        public string UG;
        public string PG;

        public void set_values()
        {
            name = "Mr. ABC";
            age = 20;
            DOB = DateTime.Now.Date;
            employed = "employed-No";
            grade = "None";
            experience = 2;
            metric = "metric-yes";
            intermediate = "intermediate-yes";
            UG = "UG-No";
            PG = "PG-No";
        }

    }
我的问题是继承的好处是什么,什么时候使用它,我总是能够通过创建对象来使用另一个类,在我小小的编程生涯中从不使用继承。
有人能告诉我们这一点吗?什么时候继承,为什么继承。

请让我知道,如果这个问题你不清楚,我会尽量让它更清楚

你需要这么做的原因有很多

  • 当您反序列化DB响应或JSON数据时,它将是必需的,该数据的格式与第一个示例中提到的类结构相同
  • 模块化的代码总是更容易处理
  • 您可以重用该类来定义不同的数据集,这些数据集不属于同一结构(或者可以说处理不一致的数据)
  • 可以重用基类来定义另一组派生类

还有更多的理由去继承遗产。如果你想创建一个继承层次结构
类B:A
,你可以通过谷歌来了解它为什么有用

  • 每个
    B
    都是
    A
    • 如果没有,不要使用继承,单独设计它们
  • 每个
    A
    A
    B
    • 如果是这样,不要使用继承,而是将它们设计为一个类
  • 没有
    B
    A
    在我的程序中有什么用处吗?
    • 如果不是,不要使用继承,这将是过度工程。而是将它们设计为一个类
现在,如果您达到了这一点,您实际上可以将它们设计为继承层次结构。在这一点上,好处也应该变得显而易见。如果您找到了我列表中的一个分支解决方案,那么在将继承应用于问题时没有看到好处是完全可以理解的


这个列表可能仍然不完整,只考虑它是一个起点,

我认为你的例子不是一个好的例子,因为<代码>职业不是一个专门的代码< <代码> >,并且<代码>身份> <代码>不是<代码>职业>代码的一种特殊形式。(有些哲学专业的学生可能不同意,但这不是重点)而且,
Identity
不是一个
程序
关于谷歌的有用信息很少,几乎什么都没有。顺便说一句,谢谢你的回复,但是如果每个B a或它们都有相似或相关的属性,那么继承就很合适,但不使用单独的类文件来实现相同的功能是更模块化的吗?@Saurabh Inheri实例并不真正关心文件……当然,对于一个严肃的项目,您应该将每个类写入一个单独的文件中。此外,不要再谈论“或者它们具有类似或相关的属性”,就好像它与“B是a”是同一回事一样。这些情况完全不同,只是一些相似性不足以用于继承。