继承
类型
- 单重继承,只能继承一个基类
- 多重继承,继承多个类,C#不支持,接口能多重继承
- 多层继承,A继承B,B继承C
- 接口继承,能继承接口
实现继承
public class Test : BaseTest,ITry,IInterface
{
// 冒号:基类放前面,接口放后面
}
-
虚方法
virtual关键字修饰方法,能够在派生的类中重写此方法,重写时用override关键字修饰。只能重写一次,而且名称参数必须完全相同,只有实现不同。 -
多态性
可以动态的调用方法,方法接受一个派生类的参数,实现派生类内部的方法,可以从基类的方法,向外输出。 -
调用方法的基类版本,base.()
-
派生类的构造函数,从基类开始按照层次结构来调用构造函数,知道满足实例化对象的要求
修饰符
- 访问修饰符
- 其他修饰符
接口
声明方式和抽象类相同,但是不允许有任何实现,只能包含方法,属性,索引器和事件的声明。内部成员没有访问修饰符,没有字段,继承了接口就必须实现其内部所有方法。
- 定义和实现接口
namespace test1
{
public interface IAccount
{
void Payin(decimal amount);
bool withdraw(decimal amount);
decimal balance{get;}
}
}
namespace test1.account
{
public class MyAccount:IAccount
{
private decimal _balance ;
public void Payin(decimal amount)
{
_balance+=amount;
}
public bool withdraw(decimal amount)
{
if(_balance>amount)
{
_balance-+amount;
return true;
}
sole.WriteLine("Faild");
return false;
}
public decimal balance=_balance;
}
}
- 派生类的接口
在实现继承的接口后,还定义自己新的方法
Is和As运算符
- as
返回对象的引用,若对象不是所要求的类型,返回null
IAccount account=o as IAccount;
if(account!=null)
{
// do something
}
- is
根据对象是否是指定的类型,返回true或false
if(o is IAccount)
{
IAccount account=(IAccount)o;
// do something
}