设为首页收藏本站【C#】第八章 面向对象编程之类和对象
繁体中文

单小喏中文网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

单小喏中文网欢迎你的光临!!!
查看: 1926270|回复: 0

【C#】第八章 面向对象编程之类和对象

[复制链接]

85

主题

89

帖子

1246

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1246

来自- 安徽合肥

扫一扫,手机访问本帖
发表于 2014-4-3 15:43:09 | 显示全部楼层 |阅读模式
面向对象编程(Object Oriented Programming,OOP):没有固定的格式,是一种一处编写代码处处调用,提升程序效率、安全性、稳定性的编程思想

C#的口号:一切皆对象。基本的数据类型、变量,都可以点(.)对应的方法、属性(比如说数组的长度Length)。在C#中,面向对象编程由封装(方法定义、属性定义)、继承多态进行体现。我们的讲解也围绕这3个关键词进行讲解。那么,
面向对象基础——类。

类:是指具有同一种具有共同特征的事物的统称,是一个群体、范围性的概念。比如,在初中思想政治这门课中,我们提到人的这个的定义:能够直立行走、并且可以创造工具和使用工具进行劳动的高等智慧生物。满足以上所有特征的都是可以称之为人!
语法规则:
class 类名{},例如
class People{}
类成员:类由字段、属性、方法组成。
[C#] 纯文本查看 复制代码
 class People {
        //定义类的成员字段
        private string zhangXiang;//描述类特向的变量(字段)
        private bool sex;
        private int age;
        //定义类的成员方法
        void Say() {
            Console.WriteLine("COME ON,BABY!");
        }
    }


又因为类是一个群体、范围性的概念,我们无法去直接使用。直接使用会产生指代不明、资源浪费等错误,所以要把这个群体、范围性的概念具体到某一个个体我们才能使用。
这个过程我们称为类的实例化(使用new关键字),这个个体称为类的对象
[C#] 纯文本查看 复制代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace test
{
    class Program
    {
        static void Main(string[] args)
        {
           People p1 =new People();//类的实例化,再定义变量保存这个对象(p1)
           People p2 = new People();
           p1.Say("p1");
           p1.Say("p1");
           p2.Say("p2");
           p2.Age = "17";
           p1.ZhangXiang = "帅";
           Console.WriteLine(p1.ZhangXiang);
           Console.WriteLine(p2.Sex);
           Console.WriteLine(p1.Age);
           Console.WriteLine(p2.Age);
        }
    }

    class People {
        //定义类的成员字段,字段不允许外部对象直接访问
        private string zhangXiang;//描述类特向的变量(字段)
        private bool sex=true;//默认值
        private string age="18";
        //把对象的字段封装成属性。
        public string ZhangXiang {
            get { return this.zhangXiang; }
            set { this.zhangXiang = value; }//使用set当外部调用的时候可以在类本身对这个对应的字段进行赋值
        }
        public bool Sex {
            set { this.sex = value; }
            get { return sex; }
        }
        //根据实际需要最复杂的属性封装过程
        public string Age {
            set { this.age = value; }
            get {
                if (int.Parse(this.age) >= 18)
                    age = "成年";
                else
                    age = "未成年";
                return age;
            }
            
        }

        //定义类的成员方法,方法对象一般可以随意调用
      public  void Say(string cont) {
            Console.WriteLine("COME ON,BABY!"+cont);
        }
    }
}


构造方法:构造方法,负责创建类的对象,在实例化的时候会自动调用。构造方法没有返回值、与类同名。
[C#] 纯文本查看 复制代码
class Student{
 //构造方法没有返回值、与类同名。
        public Student()
        {
            Console.WriteLine("我是构造方法");
            Console.WriteLine("在实例化时自动运行");
        }
}
在Main方法中调用
Student s1=new Student();


运行看看上面代码执行的步骤和输出的结果。
带参数的构造方法
[C#] 纯文本查看 复制代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace test
{
    class Student
    {
        //构造方法,负责创建类的对象,在实例化的时候会自动调用
        //构造方法没有返回值、与类同名。
        public Student(string name)
        {
            this.name = name;
        }
        private string name;
        private int age;
        public string Name
        {
            set { this.name = value; }
            get { return this.name; }
        }
    }
}
输出
 //Student s1 = new Student();//此时不能有不带参数的构造方法
            Student s1 = new Student("张三");
            Console.WriteLine(s1.Name);
            Student s2 = new Student("张三1");
            Console.WriteLine(s2.Name);


由构造方法引申,方法重载:在同一个类中,方法名相同、参数个数、类型(只是返回值不同不行)要不一致。
[C#] 纯文本查看 复制代码
class Student{

 public void Say()
        {
            Console.WriteLine("学生说");
        }
//方法重载
        public void Say(string temp)
        {
            Console.WriteLine("重载的方法" + temp);
        }
}
//在Main方法中调用
Student s1=new Student();
s1.Say();
s1.Say("哈哈");
本文章来源于:学玩网





上一篇:简谱的初步认识(1)
下一篇:简谱的初步认识(2)

帖子地址: 




上一篇名称:简谱的初步认识(1)
下一篇名称:简谱的初步认识(2)
+1
1926270°C
沙发哦 ^ ^ 马上
*滑动验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

 
发评论,即可赢取积分欧!

申请友链|意见反馈|小黑屋|手机版|Archiver|单小喏中文网 ( 皖ICP备13012632号-1 |网站地图  

GMT+8, 2016-12-8 17:50 , Processed in 0.253487 second(s), 48 queries .

Powered by danxiaonuo

© 2013-2016 danxiaonuo.

快速回复 返回顶部 返回列表