public abstract class A
{
public A()
{
Console.WriteLine('A');
}
public virtual void Fun()
{
Console.WriteLine("A.Fun()");
}
}
public class B: A
{
public B()
{
Console.WriteLine('B');
}
public new void Fun()
{
Console.WriteLine("B.Fun()");
}
}我想问的问题是
A a = new B();
A a=new A();
具体区别是什么
{
public A()
{
Console.WriteLine('A');
}
public virtual void Fun()
{
Console.WriteLine("A.Fun()");
}
}
public class B: A
{
public B()
{
Console.WriteLine('B');
}
public new void Fun()
{
Console.WriteLine("B.Fun()");
}
}我想问的问题是
A a = new B();
A a=new A();
具体区别是什么
a = new B(); 这是赋值
说明a 指向B类型对象
a = new A(); 这是赋值,a 指向A类型对象
,所以2次的对象是不一样的,所以2次a能掉的方法也不一样的,如果用接口做A 的话可以抽象 参数,
http://topic.csdn.net/u/20091121/22/5acbe625-350a-44f6-97a2-0b3ec7a2ba72.html
首先构造的是B的父类的构造体,然后才是B的构造体
http://topic.csdn.net/u/20070616/19/e7c41165-9f88-4d12-a268-867e6f70984e.html
//子类是一种特殊的父类,所以这个是可以的。
A a = new B();
//下面这个恐怕不行吧?抽象类还能这么写么?
A a=new A();
C#中抽象类,抽象方法,虚方法,方法重载拿来实现多态
A a = new B(); //可以调用子类,也可以跳用父类,如果在对个继承的情况下,可以实现动态调用(多态)
A a=new A(); //仅仅就是一个类的实例化
说明类型是A, 但是按照B的特征来开辟托管堆内存空间。A a=new A();
语法错误。抽象类不能被实例化。
A是抽象类,根本不能被实例化.这是错误的代码.在vs中根本无法编译.