您的位置:首页 > 编程语言 > C#

C#OOP基础之类,字段,属性和方法。

2016-01-18 12:47 796 查看
这两天开始学C#,刚开始熟悉其语法之类的还比较容易,开始接触OOP感觉



好吧其实也没这么夸张。但是感觉确实需要记一下。一方面是检验自己是否记住已经学习的东西,另一方面是在写的时候理解并产生新的感悟。

首先我们得搞清楚一个概念,什么是类(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");
}


跟函数其实差不多,括号内写你的动作要求。使用的时候也和调用函数一样(先实例化。)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: