不完整的模板 称为抽象类
不完整的模板 称为抽象类
Seal 无法被继承或重写
抽象类
如果父类的函数在各个子类中都不要设置不同的函数体,在父类中定义就没必要了,就可以设置只有函数名,没有函数体,声明成抽象函数
1.抽象类的设置(非抽象类里面不能含有抽象函数)
abstract class Enemy
2.抽象函数 的设置
public abstract void Attack();
3.抽象类是不能构造对象的,例如
Enemy ey=new Enemy();
只能声明Enemy ey;但new Enemy() 使用抽象类的模板是错误的
处理办法:在当前行的左边点击实现抽象类
将函数体修改
抽象函数和虚方法的区别:
抽象函数是让父类只需要声明函数,而子类负责设置
在抽象类里abstract class Enemy{
public abstract void Attack()
{。。。} }
在子类里面 class Boss : Enemy
{
public override void Attack()}
虚方法是在子类里重写函数
public virtual void Move()
在boss类中
(输入override会有提示)
public override void Move()
{
base.Move();//和父类相同
}
密封类 sealed
作用:1.防止重写某些类,导致代码混乱
2.商业原因
类不能继承,方法不能重写
在父类用virtual虚方法
普通类+virtual方法
在子类重写方法
继承类+override方法+sealed(该方法不可以再次被重写)
抽象类
C#允许把类和函数声明为 abstract抽象类 抽象类不能实例化,抽象类可以包含普通函数和抽象函数,(什么是抽象函数)抽象函数就是只有函数定义没有函数体。抽象函数本身也是虚拟的Virtual( 只有函数定义,没有函数体实现)
类是一个模板,抽象类就是一个不完整的模板,不能使用部位完整的模板去构造对象
( 为什么把某个类定义成抽象类呢 ) 因为我们知道这个类是不能构造对象的,我们把这个类我们把这个类声明称抽象类,其他人使用抽象类创建对象的时候语法就会不通过 为了防止别人误操作,所以我们就把他声明成抽象的
using System;
using System.Collections.Generic;
using System.Text;
namespace _09_抽象类
{
public abstract class Enemy
{
private int hp;
private int speed;
public void Move()
{
Console.WriteLine("Move");
}
public abstract void Attack();
}
}
1.抽象方法只能包含在抽象类中
abstract class Enemy
{
public abstract void Attack();
}
2.抽象类不能构造对象,可以声明
密封类和方法:sealed
不能继承该类;方法不能重写;
作用:
1.防止重写某些类导致代码混乱
2.商业原因
抽象函数只有函数定义没有函数体,不能实例化
可以包含普通的函数等
抽象函数本身是virtual
sealed:密封类不能被继承,密封函数不能被重写
这几节好懵,
抽象类 acstract
密封类 sealed
抽象类://abstract
抽象类只有函数定义没有函数体,抽象类是一个不完整的类。
abstract class 类名
{
pritave int Z; //这是一个正常的字段成员
public void 类名()
{
Console.WriteLine("这是一个正常函数");
}
public abstract void 类名();
}
抽象类内可以包含正常的字段成员及函数成员,但抽象函数必须在抽象类里,抽象类为父类,用于子类必须有用此类包含的抽象方法,供子类编辑。
语法规定,只能声明抽象类,但不能使用抽象类直接构造对象。因为不能使用一个不完整的类构造对象。但我们可以使用它的子类构造对象。
实现抽象类:
光标移动到报错上等待错误提示可以快捷操作"实现抽象类"
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
密封类和密封方法: //sealed
密封类:
sealed class 类名
{
此时类为密封类,不可被其它类继承。
}
密封方法:
class 派生类
{
public sealed override 函数名
{
此时函数不可以被重写,但仍可被继承
}
}
作用:防止重写某些类导致代码混乱。
作用:商业原因。
普通类里是不能包括抽象方法的
抽象方法只能包含在抽象类里,抽象类可以没有抽象方法。
.密封类 se
抽象类使用 abstract 关键字进行修饰。 与java相同。
抽象类不能被实例化。可以包含普通函数和抽象函数。
类继承抽象类 必须实现抽象类中所有的抽象方法。
密封类和密封方法 使用sealed关键字进行修饰。
密封类不能被继承。 密封方法不能被重写。
如果方法要定义为密封方法时, 必须是重写之后的方法。