Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 37249
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 10, 20262026-05-10T14:31:15+00:00 2026-05-10T14:31:15+00:00

When should I use an interface and when should I use a base class?

  • 0

When should I use an interface and when should I use a base class?

Should it always be an interface if I don’t want to actually define a base implementation of the methods?

If I have a Dog and Cat class. Why would I want to implement IPet instead of PetBase? I can understand having interfaces for ISheds or IBarks (IMakesNoise?), because those can be placed on a pet by pet basis, but I don’t understand which to use for a generic Pet.

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. 2026-05-10T14:31:16+00:00Added an answer on May 10, 2026 at 2:31 pm

    Let’s take your example of a Dog and a Cat class, and let’s illustrate using C#:

    Both a dog and a cat are animals, specifically, quadruped mammals (animals are waaay too general). Let us assume that you have an abstract class Mammal, for both of them:

    public abstract class Mammal 

    This base class will probably have default methods such as:

    • Feed
    • Mate

    All of which are behavior that have more or less the same implementation between either species. To define this you will have:

    public class Dog : Mammal public class Cat : Mammal 

    Now let’s suppose there are other mammals, which we will usually see in a zoo:

    public class Giraffe : Mammal public class Rhinoceros : Mammal public class Hippopotamus : Mammal 

    This will still be valid because at the core of the functionality Feed() and Mate() will still be the same.

    However, giraffes, rhinoceros, and hippos are not exactly animals that you can make pets out of. That’s where an interface will be useful:

    public interface IPettable {     IList<Trick> Tricks{get; set;}     void Bathe();     void Train(Trick t); } 

    The implementation for the above contract will not be the same between a cat and dog; putting their implementations in an abstract class to inherit will be a bad idea.

    Your Dog and Cat definitions should now look like:

    public class Dog : Mammal, IPettable public class Cat : Mammal, IPettable 

    Theoretically you can override them from a higher base class, but essentially an interface allows you to add on only the things you need into a class without the need for inheritance.

    Consequently, because you can usually only inherit from one abstract class (in most statically typed OO languages that is… exceptions include C++) but be able to implement multiple interfaces, it allows you to construct objects in a strictly as required basis.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Ask A Question

Stats

  • Questions 405k
  • Answers 405k
  • Best Answers 0
  • User 1
  • Popular
  • Answers
  • Editorial Team

    How to approach applying for a job at a company ...

    • 7 Answers
  • Editorial Team

    What is a programmer’s life like?

    • 5 Answers
  • Editorial Team

    How to handle personal stress caused by utterly incompetent and ...

    • 5 Answers
  • Editorial Team
    Editorial Team added an answer Depending on exactly what you need to do, you could… May 15, 2026 at 5:55 am
  • Editorial Team
    Editorial Team added an answer Are you sure you didn't compile managed C++ (targetting CLR)… May 15, 2026 at 5:55 am
  • Editorial Team
    Editorial Team added an answer Try adding file=http://www.donatellabernardi.ch/drupal/sites/default/files/files/projects/Test jacques/Video/testVideo.flv to the flashvars parameter. Also, you've… May 15, 2026 at 5:55 am

Trending Tags

analytics british company computer developers django employee employer english facebook french google interview javascript language life php programmer programs salary

Top Members

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.