extern is unlikely to be something you want to use. It means that the method is implemented, but implemented externally – and typically used in interop scenarios where you’re defining a method implelemented in external code.
abstract, on the other hand, means you’re defining the API for the method, but not providing an implementation. The subclass will have to provide the implementation for any methods or properties marked abstract
, or be abstract
itself. If you want to make a base class and have a method or property that must be implemented by subclasses, you’ll want to use abstract
.
partial classes and methods are merely a compilation tool. They allow you to use multiple files to define your type. This is mostly used with automatically generated code (ie: a designer will put the designer generated code into a separate file defining a partial class, so you can ‘fill in’ the missing pieces without looking at the implementation details). This is unlikely something you’ll use directly for defining a class.