面向对象 类 方法

面向对象

这玩意贼难,哈哈 之前写的那些都是面向过程的,C#是高级语言,他是面向对象。不过不用慌,先举一个简单的例子解释一下面向过程与面向对象。

假如说今天我中午饭想吃一盘炒肉。。。嗯,这句话的需求是想吃炒肉。
如果我们用之前面向过程的思维去考虑的话,那我们首先要做的是先拿钱,然后去市场买肉,然后在带回家切肉,然后在放到锅里炒肉,最后开吃。这种就叫面向过程,因为所有的事情都要自己去一步一步做。 
那么如果我们要用面向对象的思维,应该这样思考,我要先找能做炒肉的饭店,然后到了那边直接叫服务员,然后点一盘,等他上肉就行了,直接就可以开吃了。
面向对象的思维是省去了中间的步骤,把需要的功能直接封装起来,直接调用,如果中途碰策划说改需求了,那么我们只要把封装起来的方法改下就可以了,不会影响调用

类是一个抽象的概念,实例化之前叫类,实例化之后叫对象,类里分两种,一种叫特征(变量,字段),一种叫行为(函数,方法)

声明一个类,结果就是对象,对象是类的实体,类是对象的抽象。

语法
访问修饰符 class 类名{
    类成员
}
//访问修饰符不写默认就是internal
//字段默认是private
【internal】 class Person{
    【private】 string name;
    	public int age;
    public void Eat(){
        
    }
}
 			实例化
类名 对象名 = new 类名();

访问时候  对象名.字段名


方法

方法分四种:无参无返回值方法、有参有返回值方法、有参无返回值方法、无参有返回值方法

访问修饰符 返回值类型 方法名(参数列表)
{
    代码块
    return 值
}

举一个例子:

/*
    创建CF当中的玩家类Player,该类含有字段:名字,性别,血量,武器。
    武器背包当中匕首,步枪,机枪,狙击枪。
    玩家类具有以下方法:
    (1)自我介绍Introduce方法
    (2)换武器装备
    (3)受到攻击掉血,当血量小于等于0的时候玩家死亡
    (4)攻击其他玩家的方法
*/

using System;//系统自动引用命名空间

namespace MyTestNs//这是别的脚本的名字,我就直接写一块了,没新建脚本
{   
    /// <summary>
    /// 创建一个枚举,用来分出性别
    /// </summary>
    enum Sex//性别
    {
        Man,//男
        Woman//女
    }
    /// <summary>
    /// 武器类型 枚举
    /// </summary>
    enum WeaponType
    {
        AKM,
        M416,
        M24
    }
    /// <summary>
    /// 武器类
    /// </summary>
    class Weapon
    {
        /// <summary>
        /// 武器名字
        /// </summary>
        public string name;
        /// <summary>
        /// 攻击
        /// </summary>
        public int atk;
        /// <summary>
        /// 初始装备哪把枪
        /// </summary>
        public WeaponType type = WeaponType.AKM;
        /// <summary>
        /// 构造函数
        /// </summary>
        public Weapon(string name ,int atk ,WeaponType type)
        {
            this.name = name;
            this.atk = atk;
            this.type = type;
        }
    }
    /// <summary>
    /// 玩家类
    /// </summary>
    class Player
    {
        /// <summary>
        /// 玩家姓名
        /// </summary>
        public string name;
        /// <summary>
        /// 玩家性别
        /// </summary>
        public Sex sex;
        /// <summary>
        /// 年龄
        /// </summary>
        public int age;
        /// <summary>
        /// 血量
        /// </summary>
        public int hp;
        /// <summary>
        /// 武器
        /// </summary>
        public Weapon weapon;
        /// <summary>
        /// 用来存储的武器数组
        /// </summary>
        public Weapon[] weapons = new Weapon[10];
        
        public Player()
        {
            weapons[0] = new Weapon("AKM", 250, WeaponType.AKM);
            weapons[1] = new Weapon("M416", 100, WeaponType.M416);
        }
        //装备武器
        public void EquipWeapon(Weapon weapon)
        {
            this.weapon = weapon;
        }
        //受到攻击
        public void GetHit(int damage)
        {
            hp -= damage;
            Console.WriteLine(name + "收到了" + damage + "点伤害");
            //判断死亡
            if (hp <= 0)
            {
                Console.WriteLine("玩家死亡");
            }
        }
        /// <summary>
        /// 攻击玩家
        /// </summary>
        /// <param name="player"></param>
        public void AttackPlayer(Player player)
        {
            player.GetHit(weapon.atk);
        }
        public void Introduce()
        {
            Console.WriteLine("我叫" + name);
        }
    }
    //主函数
    static void Main(string[] args)
    {
        //实例化一个玩家
        Player player1 = new Player();
        player1.name = "李逍遥";
        player1.hp = 200;
        player1.EquipWeapon(player1.weapons[0]);
        //实例化玩家二
        Player player2 = new Player();
        player2.name = "王小虎";
        player2.hp = 20;
        player2.EquipWeapon(player2.weapons[1]);
        //攻击
        player1.AttackPlayer(player2);
        player2.AttackPlayer(player1);
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值