C#学习笔记(三)

C#类与接口的定义、继承及实现

C#学习笔记(三)
by heiyeluren


学习《Visual C#入门经典》学习笔记

1. 类的定义和继承

定义一个类使用class关键字:
class Class1
{
// members
}

默认定义的类是只能本工程中的其他类和函数才能访问的,我们也可以使用显式的方式定义我们的类是私有的:
internal class Class1
{
// members
}

加入我们要让别的工程也能够访问我们的类,我们就定义成公共的,别的工程也能访问了:
public class Class1
{
// members
}

同时我们也能定义类为抽象类,只能继承,不能实例化:
public abstract class Class1
{
// members
}

我们也能够定义类只能实例化,不能继承:

public sealed class Class1
{
// members
}

一个类继承抽象类,那么所有抽象类的成员都将继承,另外,相应的访问方式必须是符合规则的,一个公共的基类,派生类能够是公共的,也

可以是私有的,一下定义合法:
public class MyBase
{
// members
}

internal class MyClass : MyBase
{
// members
}

但是如果是个私有的基类,那么派生类就只能是私有的,一下定义是非法的:
internal class MyBase
{
// members
}

public class MyClass : MyBase
{
// members
}

如果没有任何基类,那么是继承的就是基类System.Object,它在C#中是很核心的基类,基本上我们所有基类的根类就是它,。

同时我们的也能够继承接口,对接口的成员进行实现:
public class MyClass : IMyInterface
{
// members
}

如果一个类继承的是接口的成员,那么所有接口的成员,都必须在类中进行实现,如果不想给接口的成员进行实现,可以使用“空”,就是函

数没有任何代码。

如果我们要同时继承基类和接口,那么基类就必须在接口前面,一下定义是非法的:
public class MyClass : IMyInterface, MyBase
{
// members
}

正确的指定接口和基类的方法如下:
public class MyClass : MyBase, IMyInterface
{
// members
}

当然,我们也能够同时指定多个接口:
public class MyClass : MyBase , IMyInterface, IMySecondInterface
{
// members
}

2. 接口的定义和继承

声明一个接口,跟声明一个类差不多吧,使用interface为关键字:

interface IMyInterface
{
// interface members
}

同样接口也有私有和公共访问的方式:

public interface IMyInterface
{
// interface members
}

但是abstract和sealed不能用,因为接口本来就是用来继承的,但是无法实例化。

接口同样也能继承,而且接口不象类,只有一个基类,接口继承可以有多个接口:

public interface IMyInterface : IMyBaseInterface, IMyBaseInterface2
{
// interface members
}

接口继承和System.Object的方式比较类似,就是通过接口的多台性来确定使用那个接口,接口不能实例化。


3. 类和接口的实现例子

// 定义命名空间
namespace TestApp
{
// 定义一个抽象的基类
public abstract class MyBase
{
}

// 继承抽象基类
internal class MyClass : MyBase
{
}

// 定义接口1
public interface IMyBaseInterface
{
}

// 定义接口2
internal interface IMyBaseInterface2
{
}

// 同时继承接口1和接口2
internal interface IMyBaseface: IMyBaseInterface, IMyBaseInterface2
{
}

// 继承基类和接口1
internal sealed class MyComplexClass : MyClass, IMyInterface
{
}

// 定义可以执行的类
class Class1
{
// 静态的Mian方法,一般就是应用程序的入口
static void Main(string[] args)
{
MyComplexClass myObj = new MyComplexClass();
Console.WriteLine(myObj.ToString());
}
}
}


基本上了解的就这么多了,呵呵~~~~下次再聊点别的!!

WriteTime: 2004-12-29 21:00

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值