先看一下创建一个新项目时的基本格式

using System;
using System.Collections.Generic;
using System.Linq; //引用的命名空间
using System.Text;
namespace ConsoleApplication1        //命名空间 (程序集) ConsoleApplication1 为命名空间名称
{
class Program               //类 , Program 是类名
{
static void Main(string[] args) //函数
{
}
}
}

1、命名空间

  一个解决方案下可以有多个项目,每个目就是一个命名空间(程序集),在每个项目下面添加的文件引用不同命名空间下的类时,将命名空间名称添加到主页的引用命名空间里

namespace ConsoleApplication1.wahaha //命名空间

using ConsoleApplication1.wahaha;//引用命名空间是的格式

  2、类

  一个命名空间下可建多个类,一个类文件一般放一个类,可对类进行封装   

  class Program   //program 类 是程序的主入口,各程序模块的汇总  

 

3、访问修饰符  

  位于“类”名前方

public    // 公共的      -- 访问权限是最高的

private   //私有的       -- 只能在类的内部进行访问

internal   //默认的       -- 当前命名空间(程序集)下可以访问

protected   //被保护的     -- 当前类及它的派生类中可以访问

4、封装

  对成员变量进行封装 

 定义类 ——成员变量——属性 

class  类名
{
private 数据类型 _名称; //成员变量,字段 --是私有的 public 数据类型 名称 //属性
{
get{ return _名称; } set{ _名称 = value; }
}
}

使用类,在min函数中引用 (实例化对象)

  类名   对象  =  new   类名();

student a = new student( );

例1、 对成员变量的封装

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text; namespace ConsoleApplication1
{
class Student
{
private string _Code; //成员变量 public string Code
{
get { return _Code; }
set { _Code = value; }
} private string _Name; public string Name
{
get { return _Name; }
set
{
if (value == "")
_Name = "<暂无>";
else
_Name = value;
}
} private DateTime _Birthday; public DateTime Birthday
{
get { return _Birthday; }
set { _Birthday = value; }
} public int Age
{
get
{
int end = ; end = DateTime.Now.Year - _Birthday.Year; return end;
}
} private decimal _Score; public decimal Score
{
get { return _Score; }
set
{
if (value > || value < )
_Score = ;
else
_Score = value;
}
} }
}

// 属性的类型与字段的类型可以不同

// get  set  根据需要可以只有一个

例2、对方法封装

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text; namespace ConsoleApplication1
{
public class Math1
{
public int JiaFa(int a, int b)
{
return a + b;
}
}
}
————————————————————-----
——对方法的引用
Math1 m = new Math1 ( ); m.JiaFa( , );

5、继承

子类:父类 (子类继承父类)

  父类 (基类),子类 (派生类 超类)

  一个子类只能有一个父类,子类可以继承全部父类中的public的方法和属性

案例 

namespace ConsoleApplication3
{
public class Fly
{
public virtual string Flying()
{
return "我会飞!"; —— 父类
}
}
}
—————————————————— namespace ConsoleApplication3
{
public class Bird : Fly
{ ——子类 }
}

6、多态

  类的多种形态

有了继承才有了多态

virtual   //虚方法        -- 写在访问修饰符之后(成员变量中),

override  // 重写函数体    -- 可以被子类进行重写,只能重写函数体

案例 

namespace ConsoleApplication3
{
public class Fly
{
public virtual string Flying()
{
return "我会飞!";
} }
}
————————————————
namespace ConsoleApplication3
{
public class feiji : Fly
{
public override string Flying()
{
return "屁股喷火就能飞!";
} }
}

C#面向对象 (访问修饰符、封装、继承、多态)的更多相关文章

  1. JAVA面向对象-----访问修饰符

    访问修饰符是用来控制类.属性.方法的可见性的关键字称之为访问修饰符. 1.public 一个类中,同一包中,子类中,不同包中 2.protected 一个类中,同一包中,子类中 3.default 一 ...

  2. PHP面向对象访问修饰符的基本了解

    l 文档的介绍: 对属性或方法的访问控制,是通过在前面添加关键字 public(公有),protected(受保护)或 private(私有)来实现的.被定义为公有的类成员可以在任何地方被访问.被定义 ...

  3. 1.Java基础-面向对象编程思想(封装继承多态接口)

    封装: 1.定义:隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读和修改的访问级别. 2.封装的目的是:增强安全性和简化编程,使用者不必了解具体的实现细节,而只是要通过外部接口,一特定的 ...

  4. java面向对象(封装-继承-多态)

    框架图 理解面向对象 面向对象是相对面向过程而言 面向对象和面向过程都是一种思想 面向过程强调的是功能行为 面向对象将功能封装进对象,强调具备了功能的对象. 面向对象是基于面向过程的. 面向对象的特点 ...

  5. 【译文】 C#面向对象的基本概念 (Basic C# OOP Concept) 第一部分(类,对象,变量,方法,访问修饰符)

    译文出处:http://www.codeproject.com/Articles/838365/Basic-Csharp-OOP-Concept 相关文档:http://files.cnblogs.c ...

  6. Java访问修饰符和三大特征(封装,继承和多态)

    一.访问修饰符基本介绍: java提供四种访问控制修饰符号,用于控制方法和属性(成员变量)的访问权限(范围): 1.公开级别:用public修饰,对外公开2.受保护级别:用protected修饰,对子 ...

  7. 20151024_004_C#基础知识(C#中的访问修饰符,继承,new关键字,里氏转换,is 和 as,多态,序列化与反序列化)

    1:C#中的访问修饰符 public: 公共成员,完全公开,没有访问限制. private: 私有的,只能在当前类的内部访问. protected: 受保护的,只能在当前类的内部以及该类的子类中访问. ...

  8. 1.7Oob封装 继承 访问修饰符 静态和构造方法的执行顺序

    1:访问修饰符 private     同类中 默认        同类        同包 protect    同类         同包      子类 public     同类        ...

  9. C# 面向对象基础&封装&继承&多态&加深一下冒泡排序写法

    (一)面向对象是什么? 面向对象是一种编程思想 (二)为什么要用面向对象? 1.结构清晰 2.易于维护 3.方便扩展 (三)new一个对象是什么过程? 实例化构造函数创建对象的过程就是将类实例化的过程 ...

随机推荐

  1. idea控制台中文乱码“淇℃伅”

    方法一:找到tomcat的conf目录下的logging.properties,将输出到控制台的编码改为GBK java.util.logging.ConsoleHandler.encoding = ...

  2. vs 扩展和更新下载的插件在什么位置呢,看看吧,哈哈

    C:\Users\Administrator\AppData\Local\Microsoft\VisualStudio\10.0\Extensions,注意哈,这个AppData是隐藏的哟,要显示才能 ...

  3. Spark源码资料汇总

    近几月,想要了解Spark的内部实现原理,因此想要查阅Spark的源码信息,现将所了解的资料汇总如下: 1. 博客文字类 (1) 官网 1) github 2) Spark官网 (2) gitbook ...

  4. whereis which type find

    1. whereis  name whereis命令只能用于搜索程序名,而且只搜索二进制文件(参数-b).man说明文件(参数-m)和源代码文件(参数-s).如果省略参数,则返回所有信息. 2. wh ...

  5. Tomcat 部署方式

    显示 部署 1.添加context元素方式(server.xml) <Host appBase="webapps" autoDeploy="true" n ...

  6. 01.04 linux命令(2

    ======================Linux下的用户管理==============用户信息保存/etc/passwd ,一般用户都有读的权限真正的用户:修改密码,可以登录伪用户:应用程序在 ...

  7. elasticsearch基本概念理解+elasticsearch 的shards unassigned处理方法 -- 最佳运维实践 - 集群规划

    1.es与MySQL的概念对比 2.概念理解 2.1 Index : 一个索引即是文档的集合 2.2 Document : 一个文档即是一个可被索引的基础单元信息,一条记录: 2.3 Replicas ...

  8. Linux 中文man手册安装

    首先需要确认的是有没有安装中文支持,如果没有请安装:#yum groupinstall -y "Chinese Support" 现在下载安装包: wget http://manp ...

  9. Oracle的查询-分组查询

    --查询出每个部门的平均工资 select e.deptno,avg(e.sal) from emp e group by e.deptno; 分组查询中,出现在 group by 后面的原始列,才能 ...

  10. Redis 学习笔记(篇十):Sentinel

    Sentinel(哨兵)是 Redis 的高可用解决方案:由一个或多个 Sentinel 实例组成的 Sentinel 系统可以监视任意多个主服务器,以及这些主服务器属下的所有从服务器,并在被监视的主 ...