简体   繁体   中英

best way or best-practices for learning OOP rules in c#

I found C# very interesting...but unfortunately (or fortunately ! ) it has many features to implement OOP rules....they have different machanisms and make me sometimes confused....

virtual, new,... modifiers in c# have different rules....so what is the best way or best-practices for learning OOP rules and use them easily...?

so what is the best way or best-practices for learning OOP rules and use them easily...?

The best way to learn is to keep things simple and practice (program) a lot. Regarding virtual/new/override, there are three main cases:

  1. Virtual + override - Use virtual in the base class and override in the derived class, as in:

     class BaseClass { public void virtual Test(){...} } class DerivedClass: BaseClass { public void override Test(){...} } 
  2. Abstract + override - This is a variant of the previous case where the base member does not define a body:

     abstract class BaseClass { public void abstract Test(){...} } class DerivedClass: BaseClass { public void override Test(){...} } 
  3. No modifier - This is useful when you don't plan on overriding a method:

     class BaseClass { public void Test(){...} } class DerivedClass: BaseClass { public void OtherMethod(){...} } 

    In the this case, there would be a warning if OtherMethod was named Test . Indeed, it would clash with the base method. You can get rid of the warning by adding a new modifier as in

     abstract class BaseClass { public void Test(){...} } class DerivedClass: BaseClass { public new void Test(){...} } 

    However, I would recommend avoiding the new modifier if possible since it is somewhat confusing.

Your best bet is to learn about OOP principles (encapsulation, inheritance and polymorphism) from a fundamental source . And then worry about particular language implementations later. Once you really understand the fundamental concepts, the language specifics become easy to learn, apply and master.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM