C#学习day06__面向对象

	面向对象是把构成问题事物分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描述各个事物在解决问题的步骤中的行为。

面向对象的优点
易维护、易复用、易扩展,由于面向对象有封装、集成、多态性的特性,可以设计出低耦合的系统,使系统更加灵活、更加易维护。

类和对象
类可以理解为类别,是具备某些共同特征的实体的集合,它是一种抽象的数据类型,他是对所具有相同特征实体的抽象。

类的创建
访问修饰符 class 类名{类成员}

class Person{
public string  name;
public  void Chat(){
console.WriteLine("我是" + name + ",你在干啥");
}
}

对象的创建
类名 对象名

BeautifulGirl ml = new BeautifulGirl();

字段和方法
字段就是描述一个类 特征的变量

创建字段
访问修饰符 数据类型 变量

class Person{
public string name;
public  int age = 18;
private string hobby;
}

默认访问修饰符为private,字段也可以设置初值
字段的访问
对象名.字段名

Person zhangsan = new Person();
zhangsan.name = "zhangsan";
zhangsan.age = 18;
//爱好,无法访问到私有字段
// zhangsan.hobby
console.WriteLine("姓名:{0},年龄:{1}",zhangsan.name,zhangsan.age);

方法
方法就是封装了一段有特定功能的代码段
方法就是用来描述一个类的行为

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

方法的调用
返回值类型 变量名 = 对象名.方法名(参数列表);
无参无返回值方法

public void introduceMe(){
console.WriteLine($"我叫{this.name}");
console.WriteLine($"今年{age}岁了");
console.WriteLine($"爱好是{hobby}");
}

this关键字
this表示当前对象,如无重名现象,可以省略
无参有返回值方法

public int GetGrade(){
int grade = age - 6;
if(grade < 0 || grade > 12){
grade = 0;
}
return grade;
}

有参无返回值方法

public void SetNewHobby(string newHobby){
Console.WriteLine($"我有了新的爱好{mewHobby}");
hobby += newHobby;
}

有参有返回值方法

public string[] SetNewFamilyMember(string newMember, MemberType memberType){       
  switch (memberType)     {       
  case MemberType.Wife:       
            Console.WriteLine("恭喜你有了新的家庭成员(妻子):" + newMember);                    
             familyMembers[1] = newMember;
             break;
  case MemberType.Child:   
             Console.WriteLine("恭喜你有了新的家庭成员(孩子):" + newMember);          
            familyMembers[2] = newMember; 
            break;    
                 default:
                     break;
     } 
    return familyMembers;
} 

简单的小例子

using System;
using System.Collections.Generic;
using System.Text;

namespace CF
{
    public enum Sex {,};

    //武器类型
    enum WeaponType
    {
        AKM,
        M416,
        M24,
    }

    //武器类
    class Weapon
    {
        //武器名称
        public string name;
        //武器攻击力
        public int atk;
        //武器类型
        public WeaponType type = WeaponType.AKM;

        public Weapon(string name,int atk,WeaponType type)
        {
            this.name = name;
            this.atk = atk;
            this.type = type;
        }
    }

    //玩家类
    class Player
    {
        //名字
        public string name;
        //性别
        public Sex sex;
        //年龄
        public int age;
        //血量
        public int hp;
        //武器
        public Weapon weapon;
        //武器背包
        public Weapon[] weapons = new Weapon[10];

        public Player()
        {
            //添加武器
            weapons[0] = new Weapon("AKM",250,WeaponType.AKM);
            weapons[1] = new Weapon("M416", 200, 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("嘤嘤嘤,{0}阵亡了",name);
                Environment.Exit(0);
            }
        }

        //战斗攻击
        public void AttackPlayer(Player player)
        {
            //攻击敌人
            player.GetHit(weapon.atk);
        }

        //自我介绍
        public  void introduce()
        {
            Console.WriteLine("我是{}",name);
        }

    }
}

注意:要记得引用名称空间

using System;
//注意这里要引用名称空间CF
using CF;

namespace ConsoleApp_7._21
{
    class Program
    {
        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 = 250;
            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、付费专栏及课程。

余额充值