C#面向对象(初级)

一、面向对象:创建一个对象,这个对象最终会帮你实现你的需求,尽管其中的过程非常曲折艰难。这也就是所谓的“你办事我放心”。

例如:

面向对象:折纸

爸爸开心地用纸折成了一个纸鹤;

妈妈不开心地用纸折成了一只小猪;

妹妹把纸变成了一朵玫瑰花。

纸作为一个对象,可以被折成纸鹤,小猪和玫瑰花,而不用关心是谁怎样折出来的。

面向对象三大特征:封装、继承、多态。

二、对象:现实中存在的事物,本质是类的实例,存在栈的一个变量。可以通过对象的属性(特征)和方法(行为)来描述这个对象。

例如:

蓝色妖姬这个对象

中文学名(属性):玫瑰花(属性值)

科(属性):蔷薇科(属性值)

颜色(属性):蓝色(属性值)

方法(行为):蓝色妖姬性喜阳光,耐寒、耐旱,适应性较强。

对象的初始化:创建好一个类的对象后,为这个对象的属性赋值的过程。

三、类:把具有相同属性和相同方法的对象进一步封装从而抽象出来的概念。类是个模型,根据类创建出来对象,并确定了对象应该具有的属性和方法。

语法:

[public] class 类名

{

  字段;//字段的命名一般在前加下划线,如_name

  属性;

  方法;

}

1、类的实例化:创建这个类的对象的过程。其中类是不占内存而对象是占内存的。

例如:

//定义一个水果类

public class Fruit
    {
        //字段:存储数据
        string _name; //水果的名字
        string _shape;//形状
        string _color;//颜色
        double _weight;//重量
        //方法
        public void output()//输出水果的数据
        {
            Console.WriteLine("{0}是{1}形的,颜色是{2}色,平均重量为{3}克。", this._name, this._shape, this._color, this._weight);
        }

}

class Program
    {
        static void Main(string[] args)
        {
            Fruit apple = new Fruit();  //类的实例化
            apple._name = "苹果";
            apple._shape = "圆";
            apple._color = "无";
            apple._weight = 250;

apple.output();
            Console.ReadKey();
         }
    }  //输出结果:苹果是圆形的,颜色是红色,平均重量为250克。

2、属性:对字段进行再处理,限定对字段的赋值和取值,不让外界轻易访问到字段,以达到保护字段的作用。所以一般属性是public而字段是private的,让字段只能在当前类访问。字段是不存储数据的,因为它会把数据返回给字段。

1)属性的本质就是两个方法,一个是get(),用来取值;一个是set(),用来赋值。

例如:

//把上面的水果类加入属性对字段进行保护

public class Fruit
    {
        //字段
        string _name;
        //属性
        public string Name
        {
            get { return _name; } //当输出属性值时,执行get方法。当对get()操作时,对字段的值操作,因为此时字段已被赋值。
            set { _name = value; } //当给属性赋值时,首先执行set方法。当对set()操作时,应对value操作。
        }
        string _shape;
        public string Shape
        {
            get { return _shape; }
            set { _shape = value; }
        }
        string _color;
        public string Color    //当水果的颜色输入为无的时候,限定_color的值为红
        {
            get { return _color; }
            set {
                if (value == "无")
                {
                    value = "红";
                }
                _color = value;
            }
        }
        double _weight;
        public double Weight  //当水果的重量输入小于0时,限定_weight的值为10
        {
            get {
                if (_weight < 0)
                {
                    return _weight = 10;
                }
                return _weight;
            }
            set { _weight = value; }
        }
        //方法
        public void output()
        {
            Console.WriteLine("{0}是{1}形的,颜色是{2}色,平均重量为{3}克。", this.Name, this.Shape, this.Color, this.Weight); //当有属性时,访问的是属性而不是字段,可以与上一个例子进行比较
        }

}

class Program
    {
         static void Main(string[] args)
        {
            Fruit apple = new Fruit("苹果", "圆", "无", 250); //实例化对象
            apple.Name = "苹果"; //访问的是属性,此时字段已被保护
            apple.Shape = "圆";
            apple.Color = "无";
            apple.Weight = 250;

apple.output();
            Console.ReadKey();
         }
    }//输出结果:苹果是圆形的,颜色是红色,平均重量为250克。

2)因为属性不一定都有get()和set()这两种方法,所以又分为:

a、可读可写属性:既有get()又有set()。

b、只读属性:只有get()。

c、只写属性:只有set()。

3、静态类和非静态

静态类:当你想要把你的类当作工具类去使用,也就是会经常使用时,比如说console类。

1)静态类中只允许有静态成员,不能访问实例成员;

2)调用静态成员是,通过类名.静态成员来访问,调用简单,不用创建对象;

3)静态类在整个项目中实现资源共享,因为静态存储区域谁都可以访问;

4)当全部运行程序都结束的时候,静态类才会释放资源。因为存在垃圾回收器(GC)。

非静态类:

1)非静态类中既可以有实例成员,又可以有静态成员;

2)调用实例成员时,通过对象名.实例成员来访问;

3)实例化可以自动销毁。

4、构造函数:是一种特殊的方法,用来创建对象,可以在函数中对对象进行初始化,也就是给对象的每个属性依次赋值。

1)构造函数的名称要跟类的名称一样,修饰符必须是public;

2)构造函数没有返回值;

3)构造函数可以进行重载;

4)创建对象时执行构造函数;

5)类中会有个默认的无参数的构造函数,当写了个新的构造函数时,默认的会被替代。

例如:

public class Fruit
    {
        //字段
        string _name;
        //属性
        public string Name
        {
            get { return _name; }
            set { _name = value; }
        }
        string _shape;
        public string Shape
        {
            get { return _shape; }
            set { _shape = value; }
        }
        string _color;
        public string Color
        {
            get { return _color; }
            set {
                if (value == "无")
                {
                    value = "红";
                }
                _color = value;
            }
        }
        double _weight;
        public double Weight
        {
            get {
                if (_weight < 0)
                {
                    return _weight = 10;
                }
                return _weight;
            }
            set { _weight = value; }
        }

//构造函数
        public Fruit(string name, string share, string color, double weight)
        {
            this.Name = name;
            this.Shape = share;
            this.Color = color;
            this.Weight = weight;
        }
        //构造函数的重载
        public Fruit(string name, string share):this(name ,share , "" ,0)  //通过:this()调用本类的构造函数
        {

}
        //方法
        public void output()
        {
            Console.WriteLine("{0}是{1}形的,颜色是{2}色,平均重量为{3}克。", this.Name, this.Shape, this.Color, this.Weight);
        }

}

class Program
    {
         static void Main(string[] args)
        {
            Fruit apple = new Fruit("苹果", "圆");//调用重载构造函数
            //Fruit apple = new Fruit("苹果", "圆", "无", 250); //调用构造函数,想让大家了解构造函数的重载所以先注释掉

apple.output();
            Console.ReadKey();
         }
    }//输出结果:苹果是圆形的,颜色是色,平均重量为克。(注意这个是重载构造函数)

5、析构函数

1)命名跟类名一样;

2)当程序结束时进行,可以帮助我们马上释放资源(释放对象);

3)不带修饰符或参数;

4)不能被调用,它是被动被编译器调用的;

5)一个类只能有一个解构器,不能被重载或是继承(这点跟构造函数不同);

语法:

~class()

{

  // Cleaning up code goes here

}

6、关键字new

1)在内存中开辟一块空间;

2)在内存空间创建对象;

3)调用对象的构造函数对对象进行初始化(也因此构造函数的修饰符必须是public)。

7、关键字this

1)代表当前类的对象;

2)在类中显示调用本类的构造函数,语法  :this()。

参考网址:http://www.cnblogs.com/paper/archive/2009/07/31/1535998.html

时间: 2024-10-08 10:27:45

C#面向对象(初级)的相关文章

python 面向对象初级篇

Python 面向对象(初级篇) 概述 面向过程:根据业务逻辑从上到下写垒代码 函数式:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可 面向对象:对函数进行分类和封装,让开发"更快更好更强-" 面向过程编程最易被初学者接受,其往往用一长段代码来实现指定功能,开发过程中最常见的操作就是粘贴复制,即:将之前实现的代码块复制到现需功能处. Python while True: if cpu利用率 > 90%: #发送邮件提醒 连接邮箱服务器 发送邮件 关闭连接 if 硬盘

python面向对象初级(七)

概述 面向过程:根据业务逻辑从上到下写垒代码 函数式:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可 面向对象:对函数进行分类和封装,让开发“更快更好更强...” 面向过程编程最易被初学者接受,其往往用一长段代码来实现指定功能,开发过程中最常见的操作就是粘贴复制,即:将之前实现的代码块复制到现需功能处. while True: if cpu利用率 > 90%: #发送邮件提醒 连接邮箱服务器 发送邮件 关闭连接 if 硬盘使用空间 > 90%: #发送邮件提醒 连接邮箱服务器 发

python 高级之面向对象初级

python 高级之面向对象初级 本节内容 类的创建 类的构造方法 面向对象之封装 面向对象之继承 面向对象之多态 面向对象之成员 property 1.类的创建 面向对象:对函数进行分类和封装,让开发“更快更好更强...” 在python2.7中有两种类,一种是经典类,一种是新式类.2.7中经典类和新式类区别在于类的定义的时候在类名后面加上(object)的是新式类,否则就是经典类.经典类和新式类在继承上面有区别,之后在继承的时候会提及.但是在python3.5中,已经不区分新式类和经典类了.

Python面向对象-初级

面向对象三大特性 面向对象的三大特性是指:封装.继承和多态. 一.封装 封装,顾名思义就是将内容封装到某个地方,以后再去调用被封装在某处的内容. 所以,在使用面向对象的封装特性时,需要: 将内容封装到某处 从某处调用被封装的内容 第一步:将内容封装到某处 # 创建一个类 class Foo: def __init__(self,name,age): # 构造方法,根据类创造对象时自动执行 self.name = name self.age = age # 根据类Foo常见对象 # 自动执行Foo

面向对象初级

面向对象编程是一种编程方式,此编程方式的落地需要使用 “类” 和 “对象” 来实现,所以,面向对象编程其实就是对 “类” 和 “对象” 的使用. 类就是一个模板,模板里可以包含多个函数,函数里实现一些功能 对象则是根据模板创建的实例,通过实例对象可以执行类中的函数 class是关键字,表示类 创建对象,类名称后加括号即可

Python之路【第七篇】:Python基础(23)——面向对象初级

一.面向对象基础 类(Class): 用来描述具有相同的属性和方法的对象的集合.它定义了该集合中每个对象所共有的属性和方法.对象是类的实例. 类变量:类变量在整个实例化的对象中是公用的.类变量定义在类中且在函数体之外.类变量通常不作为实例变量使用. 数据成员:类变量或者实例变量用于处理类及其实例对象的相关的数据. 方法重写:如果从父类继承的方法不能满足子类的需求,可以对其进行改写,这个过程叫方法的覆盖(override),也称为方法的重写. 实例变量:定义在方法中的变量,只作用于当前实例的类.

Day6 - 面向对象初级语法

本节内容: 1.面向对象编程介绍 2.为什么要用面向对象进行开发? 3.面向对象的特性:封装.继承.多态 4.类.方法 参考文章:http://www.cnblogs.com/alex3714/articles/5188179.html 面向过程 VS 面向对象 编程范式 对不同的编程方式的特点进行归纳总结得出来的编程方式类别,即为编程范式. 不同的编程范式本质上代表对各种类型的任务采取的不同的解决问题的思路. 两种最重要的编程范式分别是面向过程编程和面向对象编程. 无论用什么形式来编程,我们都

day22 面向对象初级

面向过程 VS 面向对象 面向过程的程序设计:核心是过程二字,过程指的是解决问题的步骤,即先干什么再干什么......面向过程的设计就好比精心设计好一条流水线,是一种机械式的思维方式. 优点是:复杂度的问题简单化.流程化 缺点是:一套流水线或者流程就是用来解决一个问题,生产汽水的流水线无法生产汽车,即便是能,也得是大改,改一个组件,牵一发而动全身. 应用场景:一旦完成基本很少改变的场景,著名的例子有Linux內核,git,以及Apache HTTP Server等. 面向对象的程序设计:核心是对

web前端学习笔记------JS面向对象初级

基本概念 对象:对象就是一个整体,对外提供一个整体. 面向对象:使用对象时,只关注对象提供的功能,不关注其内部的细节. 三个特点(类C++):封装.继承.多态 一些概念区别 1.方法与函数 方法:obj.fn = function(){} 函数:function fn(){} 其中函数 function fn(){} 相当于 window.fn = function(){} 2.类与对象 类:不具备实际的功能,只能用来构造对象 对象:真正有功能的东西,被类给构造出来的 构造函数(工厂方式) 以p

面向对象初级篇

一.概述 面向过程:根据业务逻辑从上到下写垒代码 函数式:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可 面向对象:对函数进行分类和封装,让开发"更快更好更强..." 二.创建类和对象 面向对象编程是一种编程方式,此编程方式的落地需要使用 "类" 和 "对象" 来实现,所以,面向对象编程其实就是对 "类" 和 "对象" 的使用. 类就是一个模板,模板里可以包含多个函数,函数里实现一些功能 对象