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);

        }
    }
}

你可能感兴趣的:(面向对象,c#)