C# 中的抽象类
【摘要】
抽象:笼统,模糊,看不懂,不明白
抽象类的特点:
1.如果一个类中只存在着只有方法声明但是没有方法体(没有实现)。那么这个方法就是抽象方法。而方法所在的类一定是抽象类,这时候他们都需要abstract来修饰。
2.抽象类能不能被实例化?抽象类不能被实例化(创建对象),因为抽象方法中方法没实现。
3.抽象类必须由他的...
抽象:笼统,模糊,看不懂,不明白
抽象类的特点:
1.如果一个类中只存在着只有方法声明但是没有方法体(没有实现)。那么这个方法就是抽象方法。而方法所在的类一定是抽象类,这时候他们都需要abstract来修饰。
2.抽象类能不能被实例化?抽象类不能被实例化(创建对象),因为抽象方法中方法没实现。
3.抽象类必须由他的子类覆盖(重写)了抽象类中的所有抽象方法后,才可以实例化他的子类。子类必须实现所有的抽象方法
抽象类的细节:
1.抽象类中有没有构造函数?有,用于创建子类对象初始化父类用的。
2.抽象类中可以不定义抽象方法吗?可以。
3.abstract关键字不能和那些关键字共存? private sealedstatic
4.抽象类和普通类的区别?
相同点:抽象类和普通类有事用来描述事物的,都可以在类的内部定义任何成员(方法,属性,字段,构造函数)。
不同点:
a.普通类有足够的信息去描述事物,抽象类描述食物可能信息不足
b.普通类中不能定义抽象方法,只能定义非抽象的;抽象类两种皆可定义。
c.普通类可以被实例化:抽象类不能被实例化
5.抽象类一定是个父类吗?
是的,抽象类只有被子类继承后覆盖其所有的方法后才能实例化其子类对象
-
abstract classAnimal
-
{
-
publicinta = 3;
-
publicabstractvoidEat();
-
}
-
class Dog: Animal //子类继承抽象类
-
{
-
publicoverridevoidEat()//重新实现Eat方法
-
{
-
Console.WriteLine("啃骨头"+ a);
-
}
-
}
-
class Demo
-
{ static viodMain(string[]args)
-
{
-
newDog().Eat(); //只有实例化子类才可以调用方法
-
}
-
}
抽象类的特点:
抽象类和抽象方法必须用abstract关键字来修饰。
抽象方法只有方法声明,没有方法体,定义在抽象类中。格式:修饰符abstract返回值类型函数名(参数列表)。
抽象类不可以被实例化,也就是不可以用new创建对象。因为抽象类是具体事物抽取出来的,本身是不具体的,没有对应的实例。例如:犬科是一个抽象的概念,真正存在的是狼和狗。 抽象类通过其子类实例化,而子类需要覆盖(重写)抽象类中所有的抽象方法后才可以创建对象,否则该子类也是抽象类。 抽象类里面可以有非抽象方法。
文章来源: czhenya.blog.csdn.net,作者:陈言必行,版权归原作者所有,如需转载,请联系作者。
原文链接:czhenya.blog.csdn.net/article/details/76092172
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)