Main concepts in OOP

后端 未结 14 2136
夕颜
夕颜 2020-12-07 17:03

I was once asked in an interview \'What are the 3 main concepts of OOP?\'. I answered by saying that in my opinion there were 4 which are as follows:

  • Inheritan
14条回答
  •  执笔经年
    2020-12-07 17:32

    The problem with OOP is that nobody bothered to give a proper, concise, agreed-upon definition. Especially, I'd like to point out that all the aspects you mentioned can well be put into action without the use of object orientation!

    Two type systems that do this are the Haskell type system, which, by consense, is generally not regarded to be object-oriented, and C++ templates with template subclassing. However, it could perhaps be argued that template subclassing emulates OOP.

    Since template subclassing is not a widely known mechanism, let me give an example from the SeqAn library where it was invented.

    String cstr = "This is a test";
    String > dstr = "GATTACA";
    
    cout << "length(" << cstr << ") = " << length(cstr) << endl;
    cout << "length(" << dstr << ") = " << length(dstr) << endl;
    

    Here, String and String > are inherited of the “abstract class” String<>. They encapsulate the concept of a string, using completely different methods. They share the polymorphic length method, implemented differently for both concrete types.

提交回复
热议问题