C#语言----继承(学习总结)
2011-07-14 11:30
274 查看
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace basicCsharp
{
//继承分为两种 一种实现继承,一种接口继承
//实现继承:表示一个类派生于另外一个基类型
//接口继承:表示一个类只继承了函数的签名,没有继承任何实现代码
//C#语言支持多继承
//结构不支持类继承,但是支持接口继承!!!! 切记
//public class MyDerivedClass:MyBaseClass,Interface1,Interface2{....};
//public struct MyDerivedStruct:Interface1,Interface2{....};
//任何类都有一个默认的继承类,那就是Object.
class TestInherit
{}
/*把一个基类函数声明为Virtual,该函数就可以在派生类中重写,写在基类中*/
class MyBaseClass
{
public virtual string VirtualMethod()
{
return "This method is virtual and defined in MyBaseClass";
}
}
/*在派生类中重写方法时,需要在方法前+override*/
class MyDerivedClass : MyBaseClass
{
public override string VirtualMethod()
{
return "This method is an override defined in MyDerivedClass";//若是return base.VirthalMethod() 返回基类此方法的返回值
}
}
/*抽象类和抽象函数的声明为abstract,抽象类不能被实例化
如果类中包括抽象函数,那么此类也必须声明为抽象的*/
abstract class Building
{
public abstract decimal CalculateHeatingCost();//decimal 返回一个十进制小数类型
}
/*C#允许把类和方法声明为sealed,对于类来说,这表示不能继承该类;对于方法来说,该方法不能被重写
用于密封类和密封方法,不允许访问或者重写*/
sealed class FinalClass
{
}
/*如果派生类中没有重写或者自己定义构造函数,那么他们是以基类的无参构造函数*/
//publi,private
//protected:只能在派生类中调用该方法
//internal:只能在包含他的程序集中调用该方法
//protected internal:只能在包含他的程序集中、且在派生类中调用该方法
//---------------------------------------------------------------------------
/*接口只能包含方法、属性、索引器和事件的声明
接口不能有构造函数*/
public interface IBankAccount
{
void PayIn(decimal amount);//映射3个方法
bool Withdraw(decimal amount);
decimal Balance
{
get;
}
}
public class SaveAccount : IBankAccount
{
private decimal balance;//私有的余额属性
public void PayIn(decimal amount)
{
balance = balance + amount;
}
public bool Withdraw(decimal amount)
{
if (balance >= amount)
{
balance = balance - amount;
return true;
}
else
{
Console.WriteLine("Withdrawal attempt failed");
return false;
}
}
public decimal Banlance
{
get
{
return balance;
}
}
public override string ToString()
{
return String.Format("Venus Bank Saver:Banlance={0,6:c}", balance);
}
}
/*接口还可以继承接口,生成派生接口,例如不同银行间的转账业务:*/
// 首先给个接口继承 用于转账
public interface ITransferBankAccount : IBankAccount
{
bool TransferTo(IBankAccount destination, decimal amount);
}
//另外一家银行拥有银行间转账业务
public class CurrentAccount : ITransferBankAccount//不仅继承ITransferBankAccount的接口方法,还拥有IBankAccount接口方法
{
private decimal balance;//私有的余额属性
public void PayIn(decimal amount)
{
balance = balance + amount;
}
public bool Withdraw(decimal amount)
{
if (balance >= amount)
{
balance = balance - amount;
return true;
}
else
{
Console.WriteLine("Withdrawal attempt failed");
return false;
}
}
public decimal Banlance
{
get
{
return balance;
}
}
public bool TransferTo(IBankAccount destination,decimal amount)
{
;
if (Withdraw(amount))
{
destination.PayIn(amount);
return true;
}else return false;
}
public override string ToString()
{
return String.Format("Jupiter Bank Saver:Banlance={0,6:c}", balance);
}
}
}
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace basicCsharp
{
//继承分为两种 一种实现继承,一种接口继承
//实现继承:表示一个类派生于另外一个基类型
//接口继承:表示一个类只继承了函数的签名,没有继承任何实现代码
//C#语言支持多继承
//结构不支持类继承,但是支持接口继承!!!! 切记
//public class MyDerivedClass:MyBaseClass,Interface1,Interface2{....};
//public struct MyDerivedStruct:Interface1,Interface2{....};
//任何类都有一个默认的继承类,那就是Object.
class TestInherit
{}
/*把一个基类函数声明为Virtual,该函数就可以在派生类中重写,写在基类中*/
class MyBaseClass
{
public virtual string VirtualMethod()
{
return "This method is virtual and defined in MyBaseClass";
}
}
/*在派生类中重写方法时,需要在方法前+override*/
class MyDerivedClass : MyBaseClass
{
public override string VirtualMethod()
{
return "This method is an override defined in MyDerivedClass";//若是return base.VirthalMethod() 返回基类此方法的返回值
}
}
/*抽象类和抽象函数的声明为abstract,抽象类不能被实例化
如果类中包括抽象函数,那么此类也必须声明为抽象的*/
abstract class Building
{
public abstract decimal CalculateHeatingCost();//decimal 返回一个十进制小数类型
}
/*C#允许把类和方法声明为sealed,对于类来说,这表示不能继承该类;对于方法来说,该方法不能被重写
用于密封类和密封方法,不允许访问或者重写*/
sealed class FinalClass
{
}
/*如果派生类中没有重写或者自己定义构造函数,那么他们是以基类的无参构造函数*/
//publi,private
//protected:只能在派生类中调用该方法
//internal:只能在包含他的程序集中调用该方法
//protected internal:只能在包含他的程序集中、且在派生类中调用该方法
//---------------------------------------------------------------------------
/*接口只能包含方法、属性、索引器和事件的声明
接口不能有构造函数*/
public interface IBankAccount
{
void PayIn(decimal amount);//映射3个方法
bool Withdraw(decimal amount);
decimal Balance
{
get;
}
}
public class SaveAccount : IBankAccount
{
private decimal balance;//私有的余额属性
public void PayIn(decimal amount)
{
balance = balance + amount;
}
public bool Withdraw(decimal amount)
{
if (balance >= amount)
{
balance = balance - amount;
return true;
}
else
{
Console.WriteLine("Withdrawal attempt failed");
return false;
}
}
public decimal Banlance
{
get
{
return balance;
}
}
public override string ToString()
{
return String.Format("Venus Bank Saver:Banlance={0,6:c}", balance);
}
}
/*接口还可以继承接口,生成派生接口,例如不同银行间的转账业务:*/
// 首先给个接口继承 用于转账
public interface ITransferBankAccount : IBankAccount
{
bool TransferTo(IBankAccount destination, decimal amount);
}
//另外一家银行拥有银行间转账业务
public class CurrentAccount : ITransferBankAccount//不仅继承ITransferBankAccount的接口方法,还拥有IBankAccount接口方法
{
private decimal balance;//私有的余额属性
public void PayIn(decimal amount)
{
balance = balance + amount;
}
public bool Withdraw(decimal amount)
{
if (balance >= amount)
{
balance = balance - amount;
return true;
}
else
{
Console.WriteLine("Withdrawal attempt failed");
return false;
}
}
public decimal Banlance
{
get
{
return balance;
}
}
public bool TransferTo(IBankAccount destination,decimal amount)
{
;
if (Withdraw(amount))
{
destination.PayIn(amount);
return true;
}else return false;
}
public override string ToString()
{
return String.Format("Jupiter Bank Saver:Banlance={0,6:c}", balance);
}
}
}
相关文章推荐
- C#语言学习之旅(3):继承
- C#语言----对象和类型(学习总结)
- C#语言学习之旅(3):继承
- 黑马程序员_学习日记4_C#基础归纳总结之继承
- [C#学习笔记]C#继承知识总结
- C#语言学习--基础部分(十九)继承
- C#语言基础学习总结-1
- C#语言学习总结
- 为什么说JAVA中要慎重使用继承 C# 语言历史版本特性(C# 1.0到C# 8.0汇总) SQL Server事务 事务日志 SQL Server 锁详解 软件架构之 23种设计模式 Oracle与Sqlserver:Order by NULL值介绍 asp.net MVC漏油配置总结
- C#中使用try catch对系统性能的影响和处理机制的学习总结!
- C#语言生成PDF文件函数总结
- C# 基础总结--类型与继承
- C#语言学习之旅(2):C#对象和类型
- [黑马程序员]14[OC语言]OC内存管理部分学习笔记总结
- 【PHP入门篇】5.语言结构语句--慕课网【学习总结】
- C语言学习内容总结2017/10/24
- Java语言中的面向对象特性:封装、继承、多态,面向对象的基本思想(总结得不错)
- Maven学习总结(三)——聚合和继承
- 简单工厂模式学习总结(C#)
- C#语言学习之旅(5)--运算符和类型强制转换