Inheritance in C# is nothing to do with what the classes are called - a derived class can be given any name you like, as long as it's a valid identifier. All that matters is that it's marked as inheriting from whatever you want its parent class to be and the latter is not 'sealed'. So this is fine:
class Parent
{
}
class AnythingYouLike : Parent
{
}
This is also fine:
class AnythingYouLike2
{
}
and, since no parent class is specified, AnythingYouLike2 inherits directly from System.Object as does the Parent class.
Because all types inherit from System.Object, this means that they inherit methods such as Equals, GetHashCode, GetType, ToString and MemberwiseClone. Some of these are virtual and so can be overridden in the derived class.