[C# 类和对象]-C# 中的方法以及类和对象编程

##################################################

目录

C# 的方法

C# 定义方法

访问修饰符

返回值类型

方法名

参数列表

方法主体

方法名的命名规范

C# 的类和对象

面向对象编程

定义类

属性和方法

成员和字段

对象的默认值

类和对象示例代码

学生例子

项目测试

求两数和

银行开户


##################################################

C# 的方法

——————————

C# 定义方法


        除了使用 .NET 提供的类的方法 我们也可以在类中添加自定义的方法
        还记得我们在 Java 中是怎样定义方法的吗? C# 的语法类似!

        定义方法的语法:

访问修饰符 返回值类型 方法名(参数列表)
{
    // 方法主体
}

——————————

访问修饰符

        我们在 Java 中接触到了访问修饰符 public/公有的
        我们在 C# 中也将接触其她的访问修饰符 例如 private/私有的

——————————

返回值类型

        我们编写的方法是实现特定功能的模块 可供她人调用
        在调用完后可以返回一个值 这个返回值的数据类型就是方法的返回值类型

        返回值类型可以是

int
float
double
bool
string

        等

        如果方法不返回任何值 就使用关键字

void

——————————

方法名

        每个自定义方法都有一个名称 方法的名称应该有明确的含义
        这样在别人调用的时候 就能清楚的知道这个方法能实现什么功能

        经典例子:

WriteLine()

        这个方法我们调用了无数遍!一眼就能看出是 输出一行信息 的意思

——————————

参数列表

        我们在调用方法时 可以向方法中传递参数
        这些参数就构成了参数列表
        如果没有参数就不用参数列表 括号内为空即可

        参数列表中的每个参数都是通过

类型 参数名

        的形式进行声明的 各个参数之间使用逗号隔开

——————————

方法主体

        方法的主体部分就是这个方法实现某一特定功能的代码

        自定义方法时 应该先写方法的声明 包括

访问修饰符
返回值类型
方法名
参数列表

        最后再写

方法主体

——————————

方法名的命名规范

        第一 见名知意 最好使用 动宾短语 表示能完成什么任务

        第二 方法名一般使用帕斯卡命名法 即 Pascal 命名法
         就是组成方法名的单词直接相连 每个单词首字母大写
        例如 WriteLine()、ReadLine() 等

##################################################

C# 的类和对象

——————————

面向对象编程

        还记得 Java 的类和对象吗?

        类和对象的关系:

类 是 创建对象 的模板
对象 是 类 的 一个具体实例

        在我们身边 每个能看到、摸到的东西 都能称之为对象

        可以把类和对象比作月饼模子和月饼的关系
        使用月饼模子可以生产出不同样式的月饼 则将 月饼模子 称之为 类
        制作出各式各样的 月饼 称之为 对象

        然后我们引申一下 作为一个程序猴子 软件意义上的对象是什么呢?

在面向对象的世界中 不同类型的事和物称之为对象 即一切皆对象

        面向对象 的编程思想 很符合人们的思维习惯

——————————

定义类

        定义类的语法:

访问修饰符 class 类名
{
    // 类的主体
}

——————————

属性和方法

        我们在 Java 中还接触过 类中可以包含 属性、方法

        属性 在 Java 中也称之为 成员变量 用来描述类的特征

        方法 用来描述类的行为

        C# 中类的定义同 Java 类似
        C# 中类可以包含

字段
属性
方法

        每个类可以使用访问修饰符来设置类的访问权限

——————————

成员和字段

        说说 成员、字段 吧

        类中的

变量
方法

        都叫做

类的成员

变量 叫 成员变量
方法 叫 成员方法

        而其中的成员变量 也称之为 字段 !

字段用来表示与 类和对象 相关联的数据

当需要保存类的特征时 需要在类中添加字段

        至于属性 在 C# 中有特殊的表示方法 这里先卖个关子 先不说!

        方法就是用来标识 类的行为
        当想要类的对象实现某个功能的时候 就在类中添加相关的方法

        总结一下:

字段    成员变量    即类的特征
方法    成员方法    即类的行为

——————————

对象的默认值

        另外 对象 的默认值是什么呢?
        对象是引用型! 所以自然是 null
        表示空 就像

int 默认 0

double 默认 0.0

        是一样的

一定要记住引用型的默认值为 null

——————————

类和对象示例代码

%%%%%

学生例子

        我们写个小项目来熟悉类和对象

         学生例子 VSCode code:

using System;

namespace _3.类和对象_学生例子
{
    /*  类和对象热身 描述学生 特征、行为
     * 
     *  声明两个类
     * 主类 = Program
     * 学生类 = Student
     */

    public class Student
    { /* 学生类 */
        /* 特征/字段 */
        public string name; // 学生姓名
        public int age; // 学生年龄
        /* 行为/方法 */
        public void Show()
        { /* 输出学生信息 */
            Console.WriteLine("学生姓名 {0} , 学生年龄 {1} ", name, age);
        }
    }

    class Program
    { /* 主类 */
        static void Main(string[] args)
        { /* 程序入口 */
            Student stu = new Student();    // 初始化 学生类/Student 类
            Console.Write("请输入姓名 <<< ");
            stu.name = Console.ReadLine();
            Console.Write("请输入年龄 <<< ");
            stu.age = int.Parse(Console.ReadLine());
            Console.Write("\n##################################################\n");
            stu.Show(); // 调用 Student.Show() 方法输出学生信息
            Console.ReadLine();
        }
    }
}

        VSCode demo:

Windows PowerShell
版权所有 (C) 2014 Microsoft Corporation。保留所有权利。

PS E:\C#> cd "e:\C#\" ; if ($?) { dotnet run Program.cs }
E:\C#\Program.cs(31,24): warning CS8601: 可能的 null 引用赋值。 [E:\C#\C#.csproj]
E:\C#\Program.cs(33,33): warning CS8604: “int int.Parse(string s)”中的形参“s”可能传入 null 引用实参。 [E:\C#\C#.csproj]
E:\C#\Program.cs(15,23): warning CS8618: 在退出构造函数时,不可为 null 的 字段“name”必须包含非 null 值。请考虑将 字段 声明为可以为 null。 [E:\C#
\C#.csproj]
请输入姓名 <<< 李恰恰
请输入年龄 <<< 13

##################################################
学生姓名 李恰恰 , 学生年龄 13

PS E:\C#>

        虽然有很多 warning 但是不影响执行结果!

##################################################

项目测试

——————————

求两数和

        需求:

定义求和类
添加两个数据成员分别保存键盘输入的两个数
再添加一个自定义方法实现两数求和的功能

        VSCode code:

using System;

namespace _4.小练习_求两数和
{
    /* 思路
     * 
     * 主要是使用 int.Parse() 进行数据类型转换
     * 我们定义 求和类/Summation 类 有两个字段 一个方法
     * 值得一提的是 Summation.Show() 这个方法的占位符 第三个参数是两个操作数相加!
     */

    public class Summation
    {
        public int Operands_1 = 0;
        public int Operands_2 = 0;
        public void Show()
        {
            Console.WriteLine("\n##################################################");
            Console.WriteLine("{0} + {1} = {2}", Operands_1, Operands_2, (Operands_1 + Operands_2));
            Console.ReadLine();
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            Summation sum = new Summation();
            Console.Write("请输入操作数_1 <<< ");
            sum.Operands_1 = int.Parse(Console.ReadLine());
            Console.Write("请输入操作数_2 <<< ");
            sum.Operands_2 = int.Parse(Console.ReadLine());
            sum.Show();
        }
    }
}

        VSCode demi:

Windows PowerShell
版权所有 (C) 2014 Microsoft Corporation。保留所有权利。

PS E:\C#> cd "e:\C#\" ; if ($?) { dotnet run Program.cs }
E:\C#\Program.cs(30,40): warning CS8604: “int int.Parse(string s)”中的形参“s”可能传入 null 引用实参。 [E:\C#\C#.csproj]
E:\C#\Program.cs(32,40): warning CS8604: “int int.Parse(string s)”中的形参“s”可能传入 null 引用实参。 [E:\C#\C#.csproj]
请输入操作数_1 <<< 521
请输入操作数_2 <<< 1314

##################################################
521 + 1314 = 1835

PS E:\C#>

——————————

银行开户

        这个项目对于没有接触过编程语言的人来说是有挑战难度的!

简单银行业务系统/Simple banking system

        简称:

SBS

        SBS 系统为银行窗口提供处理简单个人业务往来的功能

        此系统将分为以下几个步骤实现银行日常个人业务处理:
首先 为用户办理开户手续 并存入金额
其次 用户输入密码 对密码进行修改
最后 办理用户 取款、存款、转账 等业务

        我们将慢慢完善此系统 学一部分知识完善一部分功能模块:

输入输出
变量
运算符
条件分支
循环
方法

        我们可以分析出 SBS 将实现以下功能:

开户
修改密码
存款
取款
转账
显示余额

        我们可以抽象出两个类:

银行类/Bank 类
用户类/User 类

        进而分析出所有 特征/字段、行为/方法 

    Bank 类 字段 :
用户

    Bank 类 方法 :
菜单
初始化用户信息
显示所有用户
检查用户
检查用户
取款操作
存款操作
显示余额

    User 类 字段 :
用户名
用户密码
身份证号
账户余额
账号

    User 类 方法 :
存款
取款

%%%%%

        需求:

模拟银行业务的开户业务

        即 从控制台接收输入的 用户名、密码、身份证号、开户金额
        程序为账户指定一个固定值 例如 163729837463
        使用格式字符串输出账户的开户信息

        VSCode code:

using System;

namespace _5.SBS_开户业务
{
    /*  思路
     * 
     *  创建 User 类 添加有关账户信息的资源
     *  创建 Bank 类并添加 开户 方法
     *  使用 double 类型定义存款金额 这个不用说吧? 记得使用 double.Parse() 转换从控制台接收的存款金额数
     *  在 Main() 中调用 Bank 类中的自定义方法实现开户
     *  使用
     * Console.WriteLine("格式字符串", 变量列表);
     *  这种格式输出开户信息
     */

    /// <summary>
    /// 银行类 /* 你会发现正式场合的 类、方法 甚至 字段、属性 都使用文档注释 这是 C# 的标准代码风格! */
    /// </summary>
    public class Bank
    {
        /* 字段暂缺
         * ... ...
         */

        /// <summary>
        /// 开户方法
        /// </summary>
        public void CreateAccount()
        {
            // 初始化
            string account = "163729837463";                        // 随机指定的账号
            User usr = new User();                                  // 实例化 usr 对象

            // 接收数据
            usr._account = account;                                 // 得到账号
            Console.Write("请输入用户名 <<< ");
            usr._name = Console.ReadLine();                         // 得到用户名
            Console.Write("请输入用户密码 <<< ");
            usr._pass = Console.ReadLine();                         // 得到用户密码
            Console.Write("请输入用户身份证号 <<< ");
            usr._identityNum = Console.ReadLine();                  // 得到用户身份证号
            Console.Write("请输入用户存款金额 <<< ");
            usr._balance = double.Parse(Console.ReadLine());        // 得到用户存款金额

            // 输出信息
            Console.WriteLine("\n账户 >>> {0}\n用户名 >>> {1}\n存款金额 >>> {2}\n\n创建成功!",
                usr._account, usr._name, usr._balance);
            Console.ReadLine();
        }
    }

    /// <summary>
    /// 账户类
    /// </summary>
    public class User
    {
        // 你会发现正式场合我都用 _变量名 这种形式 这是 C# 标准代码风格!_(:з」∠)_
        public string _name;    // 用户名
        public string _account; // 账号
        public string _pass;    // 用户密码
        public string _identityNum; // 身份证号
        public double _balance; // 存款余额
    }

    /// <summary>
    /// 主类
    /// </summary>
    class Program
    {
        /// <summary>
        /// Main 方法
        /// </summary>
        static void Main(string[] args)
        {
            // 直接初始化银行类调用开户即可!
            Bank ba = new Bank();
            ba.CreateAccount();
        }
    }
}

        VSCode demo:

Windows PowerShell
版权所有 (C) 2014 Microsoft Corporation。保留所有权利。

PS E:\C#> cd "e:\C#\" ; if ($?) { dotnet run Program.cs }
E:\C#\Program.cs(58,23): warning CS8618: 在退出构造函数时,不可为 null 的 字段“_name”必须包含非 null 值。请考虑将 字段 声明为可以为 null。 [E:\C#\C#.csproj]

E:\C#\Program.cs(59,23): warning CS8618: 在退出构造函数时,不可为 null 的 字段“_account”必须包含非 null 值。请考虑将 字段 声明为可以为 null。 [E:\C#\C#.cspr
oj]
E:\C#\Program.cs(60,23): warning CS8618: 在退出构造函数时,不可为 null 的 字段“_pass”必须包含非 null 值。请考虑将 字段 声明为可以为 null。 [E:\C#\C#.csproj]

E:\C#\Program.cs(61,23): warning CS8618: 在退出构造函数时,不可为 null 的 字段“_identityNum”必须包含非 null 值。请考虑将 字段 声明为可以为 null。 [E:\C#\C#.
csproj]
E:\C#\Program.cs(37,25): warning CS8601: 可能的 null 引用赋值。 [E:\C#\C#.csproj]
E:\C#\Program.cs(39,25): warning CS8601: 可能的 null 引用赋值。 [E:\C#\C#.csproj]
E:\C#\Program.cs(41,32): warning CS8601: 可能的 null 引用赋值。 [E:\C#\C#.csproj]
E:\C#\Program.cs(43,41): warning CS8604: “double double.Parse(string s)”中的形参“s”可能传入 null 引用实参。 [E:\C#\C#.csproj]
请输入用户名 <<< CSDN
请输入用户密码 <<< 5211314
请输入用户身份证号 <<< 111111111111111111
请输入用户存款金额 <<< 9999999999999

账户 >>> 163729837463
用户名 >>> CSDN
存款金额 >>> 9999999999999

创建成功!

PS E:\C#>

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

燃吹

呜呜呜没钱钱吃饭了……

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值