结构、类和接口----C#

结构、类和接口----C#

1、结构

语法:

	结构修饰符 struct  结构名
	  {
	      }

结构的特点:

  • 结构是值的类型
  • 向方法传递结构时,结构是通过传值方式传递的,而不是作为引用传递的。
  • 结构的实例化可以不使用new运算符。
  • 结构可以声明构造函数,但它们必须带参数。
  • 一个结构不能从另一个结构或类继承,所有结构都直接继承自System.ValueType,后者继承自System.Object。
  • 结构可以实现接口。
  • 在结构中初始化实例字段是错误的。

2、类

类描述案例一系列在概念上有相同含义的对象,并为这些对象统一定义了编程语言上的属性和方法。

语法:

     类修饰符  class  类名
	{
	}

类修饰符:

  • new:仅允许在嵌套类声明时使用,表面类中隐藏了由基类中继承而来的、与基类中同名的成员。
  • public:不限制对该类的访问。
  • protected:可访问域限定于类内或从该类派生的类内
  • internal:只有其所在类才能访问。
  • private:只有.NET中的应用程序或库才能访问。
  • abstract:抽象类,不允许建立类的实例。
  • sealed:密封类,不允许被继承。

C#中,类只支持单继承,不支持多重继承,即一次只允许继承一个类,不能同时继承多个类。

当对一个应用sealed修饰符时,该修饰符会阻止其他类从该类继承。

3、接口

接口是一种用来定义程序的协议,它描述可属于任何类或结构的一组相关行为。接口可由方法、属性、事件和索引器或这4种成员类型的任何组合构成,但不能包含字段。

语法:

	  [修饰符]  interface  接口名称[:继承的接口列表]
	 {
	 	接口内容;
	 }

接口特征:

  • 接口类似于抽象基类:继承接口的任何非抽象类型都必须实现接口的所有成员。
  • 不能直接实例化接口。
  • 接口可以包含事件、索引器、方法和属性。
  • 接口不包含方法的实现。
  • 类和结构可从多个接口继承。
  • 接口自身可从多个接口继承。

接口可以声明一个带有get访问器的属性,而实现该接口的类可以声明同时带有get和set访问器的同一属性。

4、实例------一个控制台程序

声明3个接口IPeople,ITeacher和IStudent,其中ITeacher和IStudent继承自IPeople,然后Program类继承这3个接口,并分别实现这3个接口中的属性和方法。

代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Interface_Test
{
    interface IPeople   	//People接口
    {
        string Name     //姓名
        {
            get;
            set;
        }
        string Sex      //性别
        {
            get;
            set;
        }
    }

    interface ITeacher : IPeople    //教师接口(继承自People接口)
    {
        void teach();     	//教学方法
    }

    interface IStudent : IPeople    //学生接口(继承自People接口)
    {
        void study();   		//学习方法
    }



    class Program:IPeople,ITeacher,IStudent     //多接口继承
    {
        string name="";
        string sex="";

        public string Name         //姓名
        {
            get
            {
                return name;
            }
            set
            {
                name=value;
            }
        }
        
        public string Sex         //性别
        {
            get
            {
                return sex;
            }
            set
            {
                sex=value;
            }
        }

        public void teach()         //教学方法
        {
            Console.WriteLine(Name+" "+Sex+" "+"教师");
        }

        public void study()         //学习方法
        {
            Console.WriteLine(Name + " " + Sex + " " + "学生");
        }

        static void Main(string[] args)
        {
            Program myprogram=new Program();  	//实例化对象
            ITeacher teacher=myprogram;       //使用派生类对象实例化接口ITeacher
            teacher.Name="TOM";
            teacher.Sex="男";
            teacher.teach();

            IStudent student = myprogram;     //使用派生类对象实例化接口IStudent
            student.Name="小明";
            student.Sex="男";
            student.study();
            Console.ReadLine();
        }
    }
}

运行结果:


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值