Question: I'm just wondering if it is possible..

I have a base class, with a variable called Level. I then derive a class from it, but here Level should be called Points.

Is there any way to rename the Level variable in the derived class?

**Edit** - Excuse me for calling a property a variable. I'm quite new to programming, and especially to classes (Which our teacher doesn't teach us for some reason)

Answer: 
Classes do not contain variables; they contain fields and properties (and methods, indexers, etc.)

I assume you're referring to properties, because fields shouldn't be public anyway.

There is no way to change the name of a property inherited from a base class.

What you can do:

**Option 1**

Add a property `Points` in addition to the property `Level` inherited from the base class:

```
class MyBaseClass
{
    public int Level { get; set; }
}

class MyDerivedClass : MyBaseClass
{
    public int Points
    {
        get { return this.Level; }
        set { this.Level = value; }
    }
}

```

Example:

```
MyDerivedClass x = new MyDerivedClass();
x.Points = 42;
Console.WriteLine(x.Level); // prints "42"

```

**Option 2**

Turn your base class into an interface, so you can implement it [explicitly](http://msdn.microsoft.com/en-us/library/ms173157%28v=VS.100%29.aspx), thereby hiding the property `Level`:

```
interface IMyInterface
{
    int Level { get; set; }
}

class MyClass : IMyInterface
{
    int IMyInterface.Level
    {
        get { return this.Points; }
        set { this.Points = value; }
    }

    public int Points { get; set; }
}

```

Example:

```
MyClass y = new MyClass();
y.Points = 42; // works
y.Level = 99; // doesn't work

IMyInterface z = y;
z.Level = 99; // works
Console.WriteLine(y.Points); // prints "99"

```
No, that's not possible. You can override the behavior using virtual properties, but not rename it.