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