c#学习笔记之结构体和接口

 一、结构体

个人认为结构体就是一种简化的类,类和结构体的功能基本上差不多。但是,结构体与类在语法以及使用上也有一定的区别。

1、结构体是值类型(value types),而类是引用类型(reference types)

2、不像类一样,结构体可以不使用new来实例化一个对象。

3、结构体能声明构造函数,但是必须传入参数。

4、结构体不能从另一个结构体或类继承。

结构体的声明:         

public struct man

{

methods;

}

 

二、接口(interface)

C#中只允许单继承,也就是一个类只能继承于,只能有一个父类。而接口就可以解决这个问题。一个类能继承多个接口。

声明一个接口:

 public interface IStorable
{
    void Read( );
    void Write(object);
}

public interface IStory

{

    void writable();

    void listen();

}

使用一个接口:

public class qwer: IStorable , IStory

{

    public void Read(){...}

    public void Write() {...}

    public void writable(){...}

    public void listen() {...}

}

 

类qwer 继承了两个接口 IStorable和IStory,并为每个接口中的方法生命了具体的实现。需要注意的是:接口中只包含了方法的声明,而方法的具体实现需要在继承他的类中具体实现。否则,编译器会报错。另外,接口中的方法的声明不能有修饰符,也就是access modifier。

 

2、当继承的两个或多个接口中有名字相同的方法时,可以有接口的显示实现,和隐式实现。

eg:

interface IStorable
 {
       void Read();
       void Write();
 }

interface ITalk{
        void Talk();
        void Read();
 }

 

IStorable和ITalk接口中都包含Read()方法,在继承他们的类中,要分别实现他们的功能。

 

 public class Document : IStorable, ITalk
 {
    public Document(string s)
     {…; }
     // Make read virtual
     public virtual void Read() 
     {…; }// IStorable的Read方法,是隐式实现。
     public void Write()
     {…; }
     void ITalk.Read()
     { …; }//ITalk 的Read()方法,是显示实现
     public void Talk()
     { …; }
}

 

posted @ 2015-04-07 10:57  prog123  阅读(1726)  评论(0编辑  收藏  举报