Your question has two parts. Let's take them one by one.
1. Yes, It's possible to have same method name in base and extended class when using virtual/override as following;
class A
{
public virtual void Show()
{ }
}
class B: A
{
public override void Show()
{ }
}
2. A obja = new A(); //Correct
A objaa = new B(); //Correct, Parent can hold the reference of child.
B objb = new B(); //Correct
//B objbb = new A(); //Compile type error as parent instance cann't be assigned to child.
B objbb = (B) new A(); //Explicit type casting supresses compile time error but throws run time error