Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Please explain the utility of abstract methods in C#

Tags:

c#

.net

Just the 5 minute overview would be nice....

like image 657
CoderGirlCSharp Avatar asked May 20 '10 18:05

CoderGirlCSharp


People also ask

What is the utility of abstract class?

The short answer: An abstract class allows you to create functionality that subclasses can implement or override. An interface only allows you to define functionality, not implement it. And whereas a class can extend only one abstract class, it can take advantage of multiple interfaces.

What is the use of abstract method?

Abstract methods are those types of methods that don't require implementation for its declaration. These methods don't have a body which means no implementation. A few properties of an abstract method are: An abstract method in Java is declared through the keyword “abstract”.

What is abstract method in C?

An Abstract method is a method without a body. The implementation of an abstract method is done by a derived class. When the derived class inherits the abstract method from the abstract class, it must override the abstract method. This requirment is enforced at compile time and is also called dynamic polymorphism.

What are the advantages of abstract method?

It can have final methods, they force the subclass not to change the body of the method. You can use an abstract class by inheriting it from another class and then provide implementations to the abstract methods in it. If an abstract class doesn't have any method implementation, it's always better to use interface.


1 Answers

public abstract class MyBaseController {
    public void Authenticate() { var r = GetRepository(); }
    public abstract void GetRepository();
}
public class ApplicationSpecificController {
    public override void GetRepository() { /*get the specific repo here*/ }
}

This is just some dummy code that represents some real world code I have (for brevity this is just sample code)

I have 2 ASP MVC apps that do fairly similar things. Security / Session logic (along with other things) happens the same in both. I've abstracted the base functionality from both into a new library that they both inherit. When the base class needs things that can only be obtained from the actual implementation I implement these as abstract methods. So in my above example I need to pull user information from a DB to perform authentication in the base library. To get the correct DB for the application I have an abstract GetRepository method that returns the repository for the application. From here the base can call some method on the repo to get user information and continue on with validation, or whatever.

When a change needs to be made to authentication I now only need to update one lib instead of duplicating efforts in both. So in short if you want to implement some functionality but not all then an abstract class works great. If you want to implement no functionality use an interface.

like image 98
Justin Avatar answered Oct 10 '22 11:10

Justin