一 抽象类和抽象方法
用abstract修饰的方法称为抽象方法
含有抽象方法的类必须定义为抽象类
使用场景: 为了描述抽象的概念,不予具体的事物相关联
只是当做派生类的基类来使用
抽象的特征:
抽象方法只做声明,不能包含具体实现
抽象方法旨在被继承之后使用,所以不能用
private来修饰
2,抽象类不能被直接实例化(不能用new创建)
3,抽象类可以没有抽象成员,但是抽象成员
只能在抽象类中
4,如果抽象类的子类不是抽象类,那么必须要实现
该抽象类中的所有的抽象方法,如果子类是抽象类,
可以重写也可以不重写
抽象方法和虚方法的区别:
抽象方法是特殊的虚方法
1,抽象方法必须在抽象类
2,抽象方法在类中不能有实现体,虚方法必须有
3,抽象方法在非抽象子类中必须被重写,而虚方法在子类中可以实现
也可以不重写
//Person.name = "小米";
//Person.Eat("香蕉");
二,静态成员
1,用static 关键字修饰的成员 只能由类来调用
函数所有行为对派生类的影响都一致的时候,可以定义为静态的
静态成员就相当于一个带有命名空间的全局函数
不需要实例化 而且不需要this指针,和实例(对象)无关
调用方便,加强肋的安全性 可以封装算法 当做工具来使用
有助于实现一些设计模式有助于封装
静态类
同static修饰的类
静态类中只能包含静态成员和construction修饰的常量
静态类不能实例化
静态类默认密封,不能用sealed修饰
不能被继承
有 静态构造方法,但静态狗仔方法必须是无参的
该方法第一次使用静态类调用静态成员时会执行
Student.name = "狗贼";
Student.study();
Console.WriteLine("num");
静态构造方法
可以用来初始化静态成员数据,或用于只执行一次的特定操作
在创建一个实例,第一次使用静态成员时,自动执行
不带 访问修饰符,不带参数
不能重载
里氏转换
as ( )
部分代码
abstract class A
{
public abstract void Mi();
}
abstract class B : A
{
public abstract void ni();
}
class C : B
{
public override void Mi()
{
throw new NotImplementedException();
}
public override void ni()
{
throw new NotImplementedException();
}
}
class Beauty
{
public static int age;
public static void Buy()
{
Console.WriteLine("大仙");
}
}
public sealed class time
{
public static int firsttime;
static time()
{
firsttime = 5;
Console.WriteLine("拜拜了您哪");
}
}