zoukankan      html  css  js  c++  java
  • 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()
         { …; }
    }

  • 相关阅读:
    jvisualvm工具使用
    Java四种引用包括强引用,软引用,弱引用,虚引用。
    <实战> 通过分析Heap Dump 来了解 Memory Leak ,Retained Heap,Shallow Heap
    什么是GC Roots
    Memory Analyzer tool(MAT)分析内存泄漏---理解Retained Heap、Shallow Heap、GC Root
    JDK自带工具之问题排查场景示例
    websocket协议握手详解
    ssh 登陆服务器原理
    新版本macos无法安装mysql-python包
    如何将多个小值存储进一个值中
  • 原文地址:https://www.cnblogs.com/zyqBlog/p/4397747.html
Copyright © 2011-2022 走看看