类 ,顾名思义就是分类、类别的意思。我们要面向对象编程,就需要对不同的事物进行分类。类可以说是.net面向对象的核心。

类:就是具有相同的属性和功能的对象的抽象的集合。

1.类的定义 

<访问修饰符> class <类名> { 类成员(字段、属性、方法、事件)}

举例说明,比如“人类”这就是一个类,里面可以包含属性 比如性别,种族,国家等。除了包含属性之外,还包含一些其他功能,比如:吃饭、睡觉等,可以理解为类的方法。

代码,如下:

 1         class Person
2 {
3 public string gender { get; set; }
4 public string race { get; set; }
5 public string Country { get; set; }
6 public string Eat(string strCountry)
7 {
8 switch (strCountry)
9 {
10 case "美国":
11
12 return "爱吃西餐";
13
14 case "韩国":
15
16 return "爱吃泡菜";
17 default:
18 return "不知道";
19 }
20 }
21 }

对于类的修饰符,支持上节说的五个访问修饰符

访问修饰符

说明

public

公有访问。不受任何限制。

private

私有访问。只限于本类成员访问,子类,实例都不能访问。

protected

保护访问。只限于本类和子类访问,实例不能访问。

internal

内部访问。只限于本项目内访问,其他不能访问。

protected internal

内部保护访问。只限于本项目或是子类访问,其他不能访问

  • 类的命名空音默认修饰符为:public
  • 类默认的访问修饰符为:public
  • 类的成员默认的访问修饰符则为:private
  • 类成员的作用域永远超不出包含它的类
  • 可以申明一个静态类static class ClassName,但是它的成员必须全部显式定义为静态

2.类的实例化

  类的实例 :就是类的一个真实的对象

  <类名>  <实例名> = new <类名>([构造函数的参数])

比如上面定义的人类,是一个类,而具体的某一个人,就是人类的实例,从类到类的实例的这个过程,叫类的实例化。

Person person=new Person();

3.构造函数

构造函数,又叫构造方法,就是对类进行初始化的方法。

其名称同类名,没有返回值,也不需要void ,在new的时候调用。

所有的类都有构造函数,只不过C#会默认一个无参数的构造函数,如果不定义,则使用默认。

如果定义了构造函数,则默认失效。

4.嵌套类

C#允许使用类嵌套

嵌套类型被视为是外层类型的成员,因此嵌套类型可以访问外层类型中的所有其他成员。

根据类的成员默认访问修饰符为:private的原则,嵌套类默认访问修饰符为private

嵌套类型可以自由访问外层类型的成员,而不在乎那些成员是否私有。外层类型如果想访问嵌套类型,则要受到访问规则的限制。

关于嵌套类的继承(后面会详细说明继承),如果一个类型继承了一个包含嵌套类型的类型,那么它也会自然的继承基类型中的嵌套类型,因为那个嵌套类型本身就是基类型的一个成员。因此只要那个嵌套类型不是private或者天生不能被继承的,子类型中新声明的嵌套类型还可以继承那个嵌套类型。

下面是嵌套类代码:

1 static class Tree
2 {
3 private static string _treeLeafColor = "Green";
4 static class AppleTree
5 {
6 private static string appleTreeLeaf = _treeLeafColor;
7 }
8 }

要点:

1.类可以使用修饰符static声明为静态类,申明静态后,类下所有成员必须是静态;

2.类的默认访问修饰符为:public,定义一个私的类时,要添加修饰符private;而类的成员默认访问修饰符则为:private,公有方法需要申明为:public

3.类的命名规范:采用首字母大写规则,不要使用系统类名或与修饰符相同的名字;

C#类和类的实例的更多相关文章

  1. [.net 面向对象编程基础] (9) 类和类的实例

    [.net 面向对象编程基础] (9) 类和类的实例 类 ,顾名思义就是分类.类别的意思.我们要面向对象编程,就需要对不同的事物进行分类.类可以说是.net面向对象的核心. 类:就是具有相同的属性和功 ...

  2. Java Class类以及获取Class实例的三种方式

    T - 由此 Class 对象建模的类的类型.例如,String.class 的类型是Class<String>.如果将被建模的类未知,则使用Class<?>.   publi ...

  3. Ruby学习: 类的定义和实例变量

    ruby是完全面向对象的,所有的数据都是对象,没有独立在类外的方法,所有的方法都在类中定义的. 一.类的定义语法 类的定义以 class 关键字开头,后面跟类名,以 end标识符结尾. 类中的方法以 ...

  4. 【类不类二】Python的类变量与实例变量

    在研究类的时候,难免会有很多疑问,C论坛和博客园高手如云(不知道是不是也美女如云), 搜到了这篇博文,是介绍Python的类变量和实例变量的 ! 刚好在下对self.***这种形式的实例变 量不是很理 ...

  5. Asp.Net Core 2.0 项目实战(6)Redis配置、封装帮助类RedisHelper及使用实例

    本文目录 1. 摘要 2. Redis配置 3. RedisHelper 4.使用实例 5. 总结 1.  摘要 由于內存存取速度远高于磁盘读取的特性,为了程序效率提高性能,通常会把常用的不常变动的数 ...

  6. 组合,Mixin,类、类对象、实例对象

    1.组合,将几个横向关系的组合在一起.所谓的组合就是将类的实例化放到新类里面,那么就将旧类组合进去了. class Turtle: def __init__(self, x): # 注意 init 前 ...

  7. python 类的定义 实例化 实例完后初始化

    先来看看 类的__init__, 类的__new__ , 元类的__new__的执行顺序 class TMetaclass(type): def __new__(cls,name,bases,attr ...

  8. python类属性和类方法(类的结构、实例属性、静态方法)

    类属性和类方法 目标 类的结构 类属性和实例属性 类方法和静态方法 01. 类的结构 1.1 术语 —— 实例 使用面相对象开发,第 1 步 是设计 类 使用 类名() 创建对象,创建对象 的动作有两 ...

  9. python的面向对象-类的数据属性和实例的数据属性相结合-无命名看你懵逼不懵逼系列

    1. class Chinese: country='China' def __init__(self,name): self.name=name def play_ball(self,ball): ...

  10. java入门---对象和类&概念详解&实例

        Java作为一种面向对象语言.支持以下基本概念: 多态 继承 封装 抽象 类 对象 实例 方法 重载     这篇文章,我们主要来看下: 对象:对象是类的一个实例(对象不是找个女朋友),有状态 ...

随机推荐

  1. Elasticsearch核心知识大纲脑图

  2. 如何搭建一个GitHub在自己的服务器上?

    摘自:http://blog.csdn.net/yangzhenping/article/details/43937595

  3. MS-SQL charindex的用法

    select * from table_a where charindex('a',id)>0 or charindex('b',id)>0 table_a 表中 id字段中含有" ...

  4. Selenium-webdriver基本操作1

    #! /usr/bin/env python #coding=utf-8 from selenium import webdriver import time print("====浏览器最 ...

  5. pandas 学习 —— pivot table

    0. DataFrame 的 index.columns.values >> df = pd.DataFrame(np.arange(6).reshape(3, 2), index=['o ...

  6. SPOJ Query on a tree II (树剖||倍增LCA)(占位)

    You are given a tree (an undirected acyclic connected graph) with N nodes, and edges numbered 1, 2, ...

  7. 霍夫变换Hough

    http://blog.csdn.net/sudohello/article/details/51335237 霍夫变换Hough 霍夫变换(Hough)是一个非常重要的检测间断点边界形状的方法.它通 ...

  8. JS之事件监听

    一 如果事件监听类似于如下写法,则最终只会执行最后一个事件监听,其他监听都会被覆盖掉. window.onload=funtion(){console.log(1);}; window.onload= ...

  9. Shiro 权限管理filterChainDefinitions过滤器配置

    博客转载:http://blog.csdn.net/userrefister/article/details/47807075 /** * Shiro-1.2.2内置的FilterChain * @s ...

  10. fiddler 的AutoRespoder的使用(手动添加测试桩)

    ---恢复内容开始--- 1.首先我们抓取一个百度的请求,由于百度请求是https协议,需要手动添加证书(这个不写了,大佬们自己手动找下资料) 2.fiddler抓取的百度请求,其他的无关信息删除,便 ...