C# 为什么以及何时在C中使用ParentAbstractClass Obj=新的子类()#
事实上,我不知道这是否是一个愚蠢的问题,但出于好奇,我问了我的第一个问题。我有两个问题 1) 我在YouTube上看到了一段关于抽象类的视频 在那个视频中,他正在使用C# 为什么以及何时在C中使用ParentAbstractClass Obj=新的子类()#,c#,asp.net,c#-4.0,callback,C#,Asp.net,C# 4.0,Callback,事实上,我不知道这是否是一个愚蠢的问题,但出于好奇,我问了我的第一个问题。我有两个问题 1) 我在YouTube上看到了一段关于抽象类的视频 在那个视频中,他正在使用classobj=newclassobj()创建类的对象 我的问题是为什么他没有使用AbstractClass Obj=new Child Class() 两者之间有什么区别吗?我是说 父对象=新的子类();vs.AbstractClass obj=新的子类() 2) 我的第二个问题是,我读了一个堆栈溢出问题。 在给出答案的人说了一
classobj=newclassobj()创建类的对象代码>
我的问题是为什么他没有使用AbstractClass Obj=new Child Class()代码>
两者之间有什么区别吗?我是说
父对象=新的子类();vs.AbstractClass obj=新的子类()
2) 我的第二个问题是,我读了一个堆栈溢出问题。
在给出答案的人说了一些关于
视图状态(……和视图状态保持不变
)。事实上,我在他的回答中不理解viewstate。我发表评论要求解释,但没有人给我答案。有人能回答我这是什么意思吗
请有人回答我的问题。非常感谢您的帮助。您不能实例化抽象类,但可以使用抽象变量创建具体类,例如:
Stream s = new MemoryStream(); // Stream is an abstract class
这和
MemoryStream ms = new MemoryStream();
在第一个示例中,您只能调用流
类中的成员,因为您调用的是变量上的成员,而不是实际的类型。它基于这样一个事实:当MemoryStream
从Stream
继承时,那么每个MemoryStream
也是一个流
,有时您不需要完整的子类功能(在通常期望流
的方法中,而不是具体的实现).假设ParentClass是一个抽象类,ChildClass继承父类
public abstract class ParentClass
{
public int a;
public abstract void MethodA();
}
public class ChildClass :ParentClass
{
public override void MethodA()
{
//some implementation of child
}
public void MethodChildA()
{
//some implementation
}
}
然后
我们可以使用ParentClass实例化子类的对象
ParentClass obj =new ChildClass();
obj保留从父类继承的childclass的成员和方法
obj将没有MethodChildA()实现。obj.MethodChildA()不可能,因为类型parentClass没有MethodChildA()的声明
何时
当我们只需要使用父类成员和方法时,我们将使用对象父类的类型进行实例化。
对象包括parentclass的所有方法,这些方法可以实现childclass或
ChildClass将继承抽象的具体方法
为什么
考虑一个上下文,对象必须只需要父类的属性,而不需要子类< /p>的任何方法。
ChildClass obj=new ChildClass();
何时
如果需要childclass中的所有方法和成员,我强烈建议您一次只问一个问题。如果它们不相关,就发布新问题。据我所知,抽象类是一组对象的一般特征。在这种情况下,是员工。正如您所看到的,员工可以是不同的类型,也可以有不同的行为,但对于一组员工来说,仍然有一些共同的特征和缺点,例如:FirstName和LastName对于这两种员工类型的行为都是相同的。如果有一个函数对Employee
执行某些处理,并且需要一个类型BaseEmployee
,也就是说,当您将FullTimeEmployee
实例化为BaseEmployee
并将其传递给处理方法时。