If we want to force implementation then interface is the way to go. It tells the inherited object that the rules (methods, properties...) must be implemented.
In case of abstract class we can give basic definitions on how the behavior should be, but we cannot instantiate from an abstract.
Coming to your code:
The property - nameOfInt is named abstract and it is not contained in an abstract class - which is wrong as per the specifications.
This is how you should go about with this:
abstract class foo
{
public abstract int nameOfInt { get; set; }
}
class bar : foo
{
public override int nameOfInt
{
get
{
throw new NotImplementedException();
}
set
{
throw new NotImplementedException();
}
}
}