C#类和对象

1.定义
对象:用来描述客观事物的一个实体。万物皆对象
人、空气、书。。。
类:具有相同属性和方法的一组对象集合。
人类、水果类、书类。。。
2.格式
[修饰符] class 类名
{
属性;
方法;
}
类名定义规则:
(a)Pascal规则:每个单词开头的字母大写
(b)类名应该为名词及名词短语,尽可能使用完整的词
属性:
char sex = ‘男’;
float hight = 1.70f;
String hairColor = “黑色”;
方法:
void PrintMsg()
{
Console.WriteLine(sex);
Console.WriteLine(hight);
Console.WriteLine(hairColor);
}
3.对象的创建
类名 对象名(变量) = new 类名();
4.属性和方法的调用
People p = new People();
Console.WriteLine(p.sex);//调用属性
p.PrintMsg();//调用方法
5.方法的定义
格式:[修饰符] 返回类型 方法名([参数列表])
{
方法体;
}
返回类型:数据类型、void(无返回值)
· 如果方法没有返回值,此方法必须输出结果
· 如果有返回值,此方法可以不输出结果,但是必须要有返回值(return)
方法调用:
· 调用无返回值:对象名.方法名();
· 调用有返回值:变量=对象名.方法名();

// 设定义一个三角形类,定义两个方法,求三角形的周长和面积
    int a = 3, b = 4, c = 5;//三边
    //周长方法无返回值无参数
    void ZhouChang()
    {
    
    
        int d=a+b+c;
        print("三角形的周长是:"+d);
    }
    //面积方法有返回值无参数
    int MianJi()
    {
    
    
        int e = a * b / 2;
        return e;
    }
	void Start () 
	{
    
    
       Triangle sjx = new Triangle();//创建新对象
        sjx.ZhouChang();
        
        int a = sjx.MianJi();
        print("三角形的面积是:"+a);
	}

方法的四种结构:
• 无参无返回值
• 无参有返回值
• 有参无返回值
• 有参有返回值

class ZongJie
 {
    
    
  //方法的四种结构
  //1.无参无返回值
  void JiaFa()
  {
    
    
   int a = 1, b = 1, c;
   c = a + b;
   Console.WriteLine("加法:" + c);
   }
   //2.无参有返回值
   int JianFa()
   {
    
    
    int a = 1, b = 1, c;
    c = a - b;
    return c;
   }
   //3.有参无返回值
   void ChenFa(int a, int b)
    {
    
    
    int c = a * b;
    Console.WriteLine("乘法:" + c);
    }
    //4.有参有返回值
    float ChuFa(float a, float b)
     {
    
    
      float c = a / b;
      return c;
     }       
    void QiuYu(int a, int b=2)//当不给b赋值时,则默认是2
    {
    
    
     int c = a % b;
     Console.WriteLine("求余:"+c);
    }
    static void Main(string[] args)
     {
    
    
     //创建对象
      ZongJie zj = new ZongJie();
      //1.无参无返回值的调用
      zj.JiaFa();
      //2.无参有返回值的调用
      int jf= zj.JianFa();
      Console.WriteLine("减法:"+jf);
      //3.有参无返回值的调用
      zj.ChenFa(1,2);
      //4.有参有返回值的调用
      float cf=zj.ChuFa(5, 2);
      Console.WriteLine("除法:"+cf);

     //  zj.QiuYu(3);
     //  zj.QiuYu(3, 4);//4把2覆盖,3%4=3
      }
    }

6.局部变量和成员变量
string name;//成员变量,系统默认提供一个值
void Print()
{
int age=20;//局部变量
}
作用域不同:
局部变量的作用域仅限于定义它的方法
成员变量的作用域在整个类内部都是可见的
初始值不同:
系统会给成员变量一个初始值
系统不会给局部变量赋予初始值
7.static:静态
a.修饰变量成为静态变量,修饰方法称为静态方法,修改类型为静态类
b.静态变量在内存中共享一个内存空间
c.静态方法只能调用静态变量,不能调用非静态变量
d.在同一个类中,静态方法可以直接调用静态方法,不能直接调用非静态方法
8.this:指的是类的实例
this的用法:
a.当成员变量和局部变量同名时,如果想调用成员变量,用this
b.当构造方法互相调用时,用this

 int id = 101;//成员变量
 string name;
 void Get()
 {
    
    
  int id = 1001;//局部变量
  Console.WriteLine(id);//就近原则1001
  Console.WriteLine(this.id);//101
  }
public TestThis():this(4,"张三")
{
    
    
 }
 public TestThis(int id,string name)
 {
    
    
  this.id=id;
  this.name = name;
  Console.WriteLine(this.id);
  Console.WriteLine(this.name);
}

9.构造方法
定义:方法名称和类名一致的方法,没有任何返回类型,并且也没有void
特征:如果没用写构造方法 系统会默认提供一个无参的构造方法
作用:初始化成员变量

Class People
{
    
    
string name;
string sex;
public People()
{
    
    
name = "张三";
sex = "男";
}
public People(string a, string b)
 {
    
    
  name = a;
  sex = b;
  Console.WriteLine(name+"\t"+sex); 
 }
static void Main(string[] ages)
{
    
    
 People p = new People();
 People p1 = new People("李四","男");
 People p2 = new People("王二","男");
  }
 }
 }

10.方法重载
方法的重载的规则:
• 方法名称必须相同。
• 参数列表必须不同。
• 方法的返回类型可以相同也可以不相同。
• 仅仅返回类型不同不足以称为方法的重载。
11.对象数组
格式:类名[] 对象名 = new 类名[长度];

Class people
{
    
    
string name;
string sex;
People[] people = new People[2];
void Set()
{
    
    
People p1 = new People();
p1.name = "张三";
p1.sex = "男";
People[0]=p1;

People p2 = new People();
p2.name = "李四";
p2.sex = "男";
People[1]=p2;
}
void Get()
{
    
    
 foreach(var p in people)
  {
    
    
   Console.WriteLine(people.name+"\t"+people.sex);
  }
}
static void Main(string[] args)
{
    
    
People p = new People();
p.Set();
p.Get();
}
}

猜你喜欢

转载自blog.csdn.net/weixin_44706943/article/details/125826111