//////"abstract"声明为抽象类
1.抽象类不能直接实例化
2.不能用sealed修饰符修改抽象类,因为抽象类是用来继承的,而sealed关键字是使类不能作为基类被继承
//////"abstract"声明为抽象方法
public abstract void show(); //因为抽象方法没有主体,只有定义,必须在子类中实现抽象方法
//父类中定义的抽象方法在子类中必须重写,关键字"override"
/*
多态:不同对象对同一方法作出不同的实现
*/
//实现方法:
1.传统实例化并调用多态的方法
2.利用抽象类实例化一个对象如:
/*public abstract animal
public abstract void show(){}
*/
animal dog=new dog();
dog.show();
animal pig=new pig();
pig.show();
//////"interface"关键字,接口
接口不能包含字段,属性,只能对方法的定义
//特殊的抽象方法(没有"abstract"关键字,子类实现该方法不需要加上"override"关键字)
public void change(double d);
子类中实现:
显式实现:那么在实现的方法或属性前就会加上所属接口的名称
/*
基类IBank
子类Card
*/
class Card:IBank
{
double IBank.Money
{
get
{
throw new NotImplementedException();
}
set
{
throw new NotImplementedException();
}
}
void IBank.change(double d)
{
throw new NotImplementedException();
}
}
隐式实现:
class Card:IBank
{
public double Money
{
get
{
throw new NotImplementedException();
}
set
{
throw new NotImplementedException();
}
}
public void change(double d)
{
throw new NotImplementedException();
}
}
/*
抽象类和接口的区别:
1.抽象类有字段,属性和方法,接口没有字段和属性,只有方法。
2.抽象类只能被单一继承,即一个类只能继承一个抽象类。
3.接口可以多重继承,即一个类可以继承一个或多个接口。
*/