面试之面向对象
总览
OOPs 的基本概念
- What is OOPs- OOPs refers to Object-Oriented Programming.
- Class is an abstract/virtual template/blueprint/idea to create instance of objects.
- Class can contain attributes and methods(functions)
- Objects are instances of classes created with specific data.
- Class do NOT use any memory. When create objects needs memory.
 
- Why OOPs- For big projects, OOPs have lots of advatage than Procedural Programming
- Thanks to Class, make complex things as reproducible(可重现的), simple structures.
- Thanks to Inheritance, make code easier to reuse and maintain.
- Thanks to Encapsulation, make code secure and easier to understand and maintain
- Thanks to Abstraction, make code simple and secure and easier to maintain
- Thanks to Polymorphism, make code, easier to reuse and understand
 
- Features or Principles- Inheritance(继承): child classes inherit data and behaviors from parent class
- Encapsulation(封装): containing all information in an object, exposing only selected information
- Abstraction(抽象): only exposing public methods for accessing an object
- Polymorphism(多态性): many methods can do the same task
 
更多的细节
- types of Polymorphism(多态性)- Compile Time Polymorphism(编译时多态) / Static Polymorphism(静态多态): - the type Polymorphism that happens at compile time
- So the compiler decides which methods to be called
 
- Runtime Polymorphism(运行时多态) / Dynamic Polymorphism(动态多态):- the type of Polymorphism that happens at the run time
- use it when the compiler can NOT choose right methods by parameters.
 
 
- Compile Time Polymorphism(编译时多态) / Static Polymorphism(静态多态): 
- How C++ support Polymorphism- For Static Polymorphism: based on templates, function overloading and default arguments
- For Dynamic Polymorphism: based on virtual functions
 
- Is it always necessary to create objects from class?- No, if class including static attributes or static methods, can use these attributes and methods directly.
 
- What is a constructor (构造函数)?- Constructors are special methods whose name is the same as the class name.
- The purpose is instantiate the class and do some init jobs.
 
- various types of constructors in C++- Default constructor: constructor without any parameters.
- Parameterized constructor: constructor’s parameter with some arguments.
- Copy constructor: constructor’s parameter with onther object of the same class.
 
- What is a destructor (解构函数)?- destructors free up the resources and memory occupied by an object
- Destructors are automatically called when an object is being destroyed.
 
- Different between class and structure(结构体)- class is saved in the heap memory
- structure is saved in the stack memory
- structure has NO data abstraction.
 
- any limitations of Inheritance?- needs more time to process.
- the base class and the child class, are very tightly coupled (紧密耦合)
- in some case, Inheritance might be complex for implementation
 
- Types of inheritance- Single inheritance (单继承, 父类子类两代)
- Multiple inheritances (多重继承, 1个子类多个父类)
- Multi-level inheritance (多级继承, 三代)
- Hierarchical inheritance (分层继承, 1个父类多个子类)
- Hybrid inheritance (混合继承)
 
- Name in inheritance- child class, subclass, derived class
- parent class, superclass, base class
- interface: special type of class- only allowed methods declaration, No definition.
- can NOT create objects for interface.
- you need to implement interface and define methods for their implementation
 
 
- Overloading vs Overriding- Overloading is a compile-time polymorphism feature.
- Example: Method overloading and Operator overloading
- Overriding is a runtime polymorphism feature.
- Example: Method overriding
 
- abstract class(抽象类) vs interface- 相同点: 都是特殊的类. 都不能实例化, 都包含抽象的方法.
- special types of classes. contain only the methods declaration. can NOT be an object directly.
- 主要区别: 实现接口时, 必须定义和实现所有方法. 继承抽象类时, 子类可以不定义其抽象方法.
- when an interface is implemented, the subclass must define all its methods and provide its implementation.
- when an abstract class is inherited, the subclass does not have to provide the definition of its abstract method
 
- What are access specifiers(访问说明符)- a special type of keywords, inlcude private, public, etc
- to achieve Encapsulation
 
- What is Garbage Collection in OOPs world- Each object consumes memory when it created from class.
- Garbage collection is a mechanism of handling the memory in the program.
- Garbage collection will free up memory when objects are no longer needed
 
参考资料
原创于 DRA&PHO