class A
{
public virtual void fun()
{
// code
}
} class B : A
{
// code
}
class Program
{
static void Main(string[] args)
{
A a = new B(); //类的实例化
}
}
问个类实例化的问题
A a=new A() ;
A a=new B();
这两个实例化有啥区别呀
{
public virtual void fun()
{
// code
}
} class B : A
{
// code
}
class Program
{
static void Main(string[] args)
{
A a = new B(); //类的实例化
}
}
问个类实例化的问题
A a=new A() ;
A a=new B();
这两个实例化有啥区别呀
A a=new B();//调用父类B的构造函数
先声明了一个A类,然后用B类继承A,(B:A)
B就是子类,A是父类A a=new A() ;//使用A类的构造函数实例化一个对象
A a=new B();//使用子类B的构造函数实例化父类A,创建一个父类对象
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
A a = new A();
A b = new B();
}
}
}class A
{
internal A()
{
fun();
} public virtual void fun()
{
Console.WriteLine("调用 A");
}
}class B : A
{
internal B()
{
Console.WriteLine("调用 B");
}
}看这个例子
结果
--------------------------------调用 A
调用 A
调用 B
调用 A 你new B 因为继承了A 所以执行了A
调用 B 最后回来执行自己的B()
A a=new B();第一个a指向堆中A类的一个实例,第二个a指向堆中B类的一个实例。每个实例还指向自己类的一个方法表。通过偏移指针访问的方法也不一样。构造都是先调用基类的构造器