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

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

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

1. 类的定义 

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

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

代码,如下:

         class Person
{
public string gender { get; set; }
public string race { get; set; }
public string Country { get; set; }
public string Eat(string strCountry)
{
switch (strCountry)
{
case "美国": return "爱吃西餐"; case "韩国": return "爱吃泡菜";
default:
return "不知道";
}
}
}

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

访问修饰符

说明

public

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

private

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

protected

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

internal

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

protected internal

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

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

2.  类的实例化

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

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

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

Person person=new Person();

3. 构造函数

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

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

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

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

4. 嵌套类

C#允许使用类嵌套

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

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

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

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

下面是嵌套类代码:

 static class Tree
{
private static string _treeLeafColor = "Green";
static class AppleTree
{
private static string appleTreeLeaf = _treeLeafColor;
}
}

5. 分布式类

某些类功能复杂,有大量的字段、属性,事件、方法,甚至套嵌成员。如果将类定义都写在一起,文件庞大,代码行数多,不便于理解和调试。

分布式类的特征:
A、相同的类名;
B、有partial修饰符;
C、有相同的命名空间;

//文件名为 partOne.cs
using System;
public partial class example
{
public void method1(){}
}
//文件名为 partTwo.cs
using System;
public partial class example
{
public void method2(){}
}

两个方法都属于类example但被放到不同的文件中,编辑器在发现partial后检查类名和命名空间相同,会自动把文件编译到一起,形成一个完整的类。

要点:

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

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

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

==============================================================================================

返回目录 <如果对你有帮助,记得点一下推荐哦,有不明白的地方或写的不对的地方,请多交流>

==============================================================================================

[.net 面向对象编程基础] (9) 类和类的实例的更多相关文章

  1. [.net 面向对象编程基础] (10) 类的成员(字段、属性、方法)

    [.net 面向对象编程基础] (10) 类的成员(字段.属性.方法) 前面定义的Person的类,里面的成员包括:字段.属性.方法.事件等,此外,前面说的嵌套类也是类的成员. a.类的成员为分:静态 ...

  2. C++ Primer 学习笔记_69_面向对象编程 --继承情况下的类作用域

    面向对象编程 --继承情况下的类作用域 引言: 在继承情况下,派生类的作用域嵌套在基类作用域中:假设不能在派生类作用域中确定名字,就在外围基类作用域中查找该名字的定义. 正是这样的类作用域的层次嵌套使 ...

  3. 第二章 Matlab面向对象编程基础

    DeepLab是一款基于Matlab面向对象编程的深度学习工具箱,所以了解Matlab面向对象编程的特点是必要的.笔者在做Matlab面向对象编程的时候发现无论是互联网上还是书店里卖的各式Matlab ...

  4. [.net 面向对象编程基础] (1) 开篇

    [.net 面向对象编程基础] (1)开篇 使用.net进行面向对象编程也有好长一段时间了,整天都忙于赶项目,完成项目任务之中.最近偶有闲暇,看了项目组中的同学写的代码,感慨颇深.感觉除了定义个类,就 ...

  5. [Java入门笔记] 面向对象编程基础(二):方法详解

    什么是方法? 简介 在上一篇的blog中,我们知道了方法是类中的一个组成部分,是类或对象的行为特征的抽象. 无论是从语法和功能上来看,方法都有点类似与函数.但是,方法与传统的函数还是有着不同之处: 在 ...

  6. [.net 面向对象编程基础] (3) 基础中的基础——数据类型

    [.net 面向对象编程基础] (3) 基础中的基础——数据类型 关于数据类型,这是基础中的基础. 基础..基础..基础.基本功必须要扎实. 首先,从使用电脑开始,再到编程,电脑要存储数据,就要按类型 ...

  7. [.net 面向对象编程基础] (4) 基础中的基础——数据类型转换

    [.net面向对象编程基础] (4)基础中的基础——数据类型转换 1.为什么要进行数据转换? 首先,为什么要进行数据转换,拿值类型例子说明一下, 比如:我们要把23角零钱,换成2.30元,就需要把整形 ...

  8. [.net 面向对象编程基础] (5) 基础中的基础——变量和常量

    [.net面向对象编程基础]  (5) 基础中的基础——变量和常量 1.常量:在编译时其值能够确定,并且程序运行过程中值不发生变化的量. 通俗来说,就是定义一个不能改变值的量.既然不能变动值,那就必须 ...

  9. [.net 面向对象编程基础] (7) 基础中的基础——流程控制语句

    [.net 面向对象编程基础] (7) 基础中的基础——流程控制语句 本来没有这一节的内容,后来考虑到既然是一个系列文章,那么就尽可能写的详细一些,本节参考了网上朋友所写的例子,为的是让更多小伙伴学习 ...

随机推荐

  1. jquery 判断checkbox是否选中几个版本的区别

    $('#checkbox1').prop('checked') - in jQuery 1.6+, usually the way to go $('#checkbox1').is(':checked ...

  2. 大前端学习笔记整理【五】rem与px换算的计算方式

    前言 这段时间的小项目中算是真正意义上使用了rem来进行移动端的页面布局,项目结束了我反思了一下之前的对于rem的使用...原来我以前对rem用法完全是在搞笑啊!!结合这次这个小项目,我觉得我也有必要 ...

  3. Base64正反编码

    public class Base64 { private static char[] base64EncodeChars = new char[] { 'A', 'B', 'C', 'D', 'E' ...

  4. SmartUpload实现文件上传时file和表单文本同时提交的问题

    JSP页面: <%@ page language="java" import="java.util.*" pageEncoding="UTF-8 ...

  5. noip2010-t3

    [题目描述] S 城现有两座监狱,一共关押着N 名罪犯,编号分别为1~N.他们之间的关系自然也极不和谐.很多罪犯之间甚至积怨已久,如果客观条件具备则随时可能爆发冲突.我们用“怨气值”(一个正整数值)来 ...

  6. oracle方案是什么?

    某用户拥有的所有的数据库对象的逻辑集合,就叫方案:方案在名称上和用户名是相同的. 比如有一个Oracle"用户"叫scott,那么一般称Scott用户所拥有的所有数据库对象的集合叫 ...

  7. 工具fiddler学习

    1:Fiddler 是以代理web服务器的形式工作的,它使用代理地址:127.0.0.1, 端口:8888. 当Fiddler会自动设置代理.能支持HTTP代理的任意程序的数据包都能被Fiddler嗅 ...

  8. <转>C++11标准后的C++阅读书目

    C++11标准后的C++阅读书目 C++ 新标准 C++11 的发布导致了大批新书的出现,还有一些经典书籍也进行了更新.Andrew Binstock 在 Dr.dobbs 上给大家推介一些学习 C+ ...

  9. 个人网页的留言板实现与sae的数据库账户配置

    个人网页(github)的留言板终于搞定了.总之后端的东西不会写,只有修改以前教程里面的文件.记录一下重要的过程. 使用了留言保存的send()函数,模版有注册登录功能.根据需求修改了一下,去掉了登录 ...

  10. mottoes

    1. You don't kown if you can until a try. 2. Rule youself. 3. It's what you do in the dark that puts ...