C#OOP基础之类,字段,属性和方法。
2016-01-18 12:47
796 查看
这两天开始学C#,刚开始熟悉其语法之类的还比较容易,开始接触OOP感觉
好吧其实也没这么夸张。但是感觉确实需要记一下。一方面是检验自己是否记住已经学习的东西,另一方面是在写的时候理解并产生新的感悟。
首先我们得搞清楚一个概念,什么是类(class),以及什么是对象(object);
“举个例子,人这个群体是类,我是对象。
类是一个泛指,对象将类实化。
我玩电脑,电脑是一个类的名称,但是我不可能玩全世界的所有电脑,所以我玩的是一个object。就算我玩两台电脑,那也是两个object…”
类分为静态(static)类和动态类
静态和动态最大的区别就在于,静态类型可以由类直接访问,而动态类必须实例化进行访问。
继续举栗子。
如果我们想在Main里对age字段进行修改或者调用,很明显是不可能的。因为这个字段在Person这个类里,而private使得它只能在class内被调用。我们可以把它改成“public int age;”
其实这样还是不可以被调用,因为class它是一个动态类。我们需要将其实例化。
必须先将其实例化,这段程序表明,先在Person这个类中创建对象,将创建的对象给Alexi。下面一行就是对Alexi这个对象的age字段赋值。
好了,现在我们已经知道了如何在Main中调用动态类Class,接下来我们看看类里的东西都有什么可以给我们用。
其中最常见的三个就是字段,属性和方法。
便于理解,还是以人这个类为例
字段(人的年龄,身高,体重……)
访问修饰符:
public 公有访问。
private 私有访问。只有本类的成员可以访问,实例不能访问。
protected 保护访问。本类和子类可以访问,实例不能访问。
internal 内部访问。只限于本项目内访问,其他不能访问。
protected internal 内部保护访问。只限于本项目或是子类访问,其他不能访问
后面那两个现在用不上,不理解也没关系。
数据类型:
这个应该很好理解,尤其是接触过编程的人,C#中的数据类型差不多也就那些。
比如int,long,float,double,string,bool等等。
名称:
你对字段名字的设置
分号:
之所以把分号写出来是因为C#中对分号的要求很高,表示正在努力从JavaScript的习惯中改过来,毕竟C#中一个分号的缺失可能会导致整体的无法运行…
啊,写了这么多真想用个大括号括起来
属性(字段的拓展。):
属性是OOP中封装概念的很好体现(我个人觉得…)
属性的作用就是在不改变字段的情况下对内进行修改。
那么有什么好处呢?其实这也是封装的好处:
1. 当使用的时候可以不了解其内部原理,只需要知道它的功能就可以对它进行使用。
2. 所有对数据的访问和操作都必须通过特定的方法,否则便无法使用,实现数据隐藏。
3. 如果单纯使用字段的话,就降低的类的可重用性(重复利用),并且提高了出bug的程度(无法对输入及输出进行控制)。
属性的语法和字段基本一致,只不过字段要求开头字母小写,而属性要求大写。
属性包括两部分,set(赋值)和get(取值),如图。在set(学名叫访问器)中
执行了if判断。其中value代表输入值。这个if判断使得如果赋值小于0将不记录。
get访问器则是表明当需要调用这个字段的时候允许返回age。
方法(人的动作,比如请我吃饭)
我们刚开始接触C#的时候要求必须在“static void Main(string[] args)”这句话的括号内写程序才能生效。
这句话往往被称为程序入口。其中的static表示这是一个静态方法(注意它是一个方法,而不是一个类!,它的上级有一个class)。
跟函数其实差不多,括号内写你的动作要求。使用的时候也和调用函数一样(先实例化。)
好吧其实也没这么夸张。但是感觉确实需要记一下。一方面是检验自己是否记住已经学习的东西,另一方面是在写的时候理解并产生新的感悟。
首先我们得搞清楚一个概念,什么是类(class),以及什么是对象(object);
“举个例子,人这个群体是类,我是对象。
类是一个泛指,对象将类实化。
我玩电脑,电脑是一个类的名称,但是我不可能玩全世界的所有电脑,所以我玩的是一个object。就算我玩两台电脑,那也是两个object…”
类分为静态(static)类和动态类
静态和动态最大的区别就在于,静态类型可以由类直接访问,而动态类必须实例化进行访问。
继续举栗子。
class Person //类:Person { private int age; }
如果我们想在Main里对age字段进行修改或者调用,很明显是不可能的。因为这个字段在Person这个类里,而private使得它只能在class内被调用。我们可以把它改成“public int age;”
其实这样还是不可以被调用,因为class它是一个动态类。我们需要将其实例化。
static void Main(string[] args) { Person Alexi = new Person();//实例化 Alexi.age = 19; Console.WriteLine("我今年{0}岁了。", Alexi.age);
必须先将其实例化,这段程序表明,先在Person这个类中创建对象,将创建的对象给Alexi。下面一行就是对Alexi这个对象的age字段赋值。
好了,现在我们已经知道了如何在Main中调用动态类Class,接下来我们看看类里的东西都有什么可以给我们用。
其中最常见的三个就是字段,属性和方法。
便于理解,还是以人这个类为例
字段(人的年龄,身高,体重……)
/public int age;//public字段
访问修饰符:
public 公有访问。
private 私有访问。只有本类的成员可以访问,实例不能访问。
protected 保护访问。本类和子类可以访问,实例不能访问。
internal 内部访问。只限于本项目内访问,其他不能访问。
protected internal 内部保护访问。只限于本项目或是子类访问,其他不能访问
后面那两个现在用不上,不理解也没关系。
数据类型:
这个应该很好理解,尤其是接触过编程的人,C#中的数据类型差不多也就那些。
比如int,long,float,double,string,bool等等。
名称:
你对字段名字的设置
分号:
之所以把分号写出来是因为C#中对分号的要求很高,表示正在努力从JavaScript的习惯中改过来,毕竟C#中一个分号的缺失可能会导致整体的无法运行…
啊,写了这么多真想用个大括号括起来
属性(字段的拓展。):
属性是OOP中封装概念的很好体现(我个人觉得…)
属性的作用就是在不改变字段的情况下对内进行修改。
那么有什么好处呢?其实这也是封装的好处:
1. 当使用的时候可以不了解其内部原理,只需要知道它的功能就可以对它进行使用。
2. 所有对数据的访问和操作都必须通过特定的方法,否则便无法使用,实现数据隐藏。
3. 如果单纯使用字段的话,就降低的类的可重用性(重复利用),并且提高了出bug的程度(无法对输入及输出进行控制)。
private int age; public int Age { set //赋值 { if (value < 0) { return; } age = value; } get //取值 { return age; } }
属性的语法和字段基本一致,只不过字段要求开头字母小写,而属性要求大写。
属性包括两部分,set(赋值)和get(取值),如图。在set(学名叫访问器)中
执行了if判断。其中value代表输入值。这个if判断使得如果赋值小于0将不记录。
get访问器则是表明当需要调用这个字段的时候允许返回age。
方法(人的动作,比如请我吃饭)
我们刚开始接触C#的时候要求必须在“static void Main(string[] args)”这句话的括号内写程序才能生效。
这句话往往被称为程序入口。其中的static表示这是一个静态方法(注意它是一个方法,而不是一个类!,它的上级有一个class)。
public void laugh() { Console.WriteLine("haha"); }
跟函数其实差不多,括号内写你的动作要求。使用的时候也和调用函数一样(先实例化。)
相关文章推荐
- c# 基础连接已经关闭: 连接被意外关闭,错误的解决
- C#[1]this关键字和索引器
- c#6.0新特性
- C# 对word进行设置目录
- 关于C#中 的引用类型需要实例化,值类型不需要实例化的理解
- 什么是C#?什么是.NET Framework?
- C#-生成下面的模块时,启用了优化或没有调试信息:
- C#-解决“在证书存储区中找不到清单签名证书”
- C#除法精度
- C#运算符
- c#实现将Excel文件导出为csv和UTF8格式的txt文件
- 浅谈思路严谨的管理软件中的用户在线状态控制【附部分C#参考代码】
- C#窗体自适应
- C#中的泛型
- C#编写不安全代码初探
- 【C#】简介
- C#灰度图转伪彩色图
- C#下设置TextBox默认显示文字,点击后消失
- 按大小缩放图片
- 跟siki老师学C#第四天(学习部分)