类和对象

一. 类和对象

1、定义

对象:是对客观世界中具有相同属性和行为的一组对象的抽象;
           对象是用来描述客观事物的一个实体。万物皆对象

          人、教室、笔记本、空气

类:类是对象的抽象类型,对象是类的具体实例

       类=属性 (成员变量) +操作 (对成员变量进行操作的函数)

        具有相同属性和方法的一组对象的集合

        人类、水果类、笔记本类

2、格式:

[修饰符] class 类名{    }

类名定义规则:

1、第一个单词必须是字母、下划线,后面的单词可以是字母、下划线、数字

2、所有单词的首字母必须大写

类的字段:访问修饰符+数据类型+字段名称

类内容

[修饰符] class 类名

{   

属性;

方法;

}

 //属性

    char sex = '男';

    float shenGao = 1.75f;

    string a = "浅黄色";//头发颜色

    //方法

    void Smile()

    {

        Debug.Log(sex);

        print(shenGao);

        Debug.Log(a);

    }

3、对象的创建:

类名 对象名(变量)=new 类名();

LiJiangTao ljt = new LiJiangTao();

4、属性和方法的调用

属性:对字段的一个扩展

调用属性和方法用 运算符

LiJiangTao ljt = new LiJiangTao();

        print(ljt.sex);//调用属性

        ljt.Smile();//调用方法

5、方法的定义:

                               public         void          print     {int a,int b} {...}
                              访问修饰符   返回值类型   方法名     参数列表
                              一般是公有的

                             类外可以通过公有的成员方法来访问该类私有的成员

返回类型:数据类型(基本、引用)、void(无返回值)

6、方法的操作:

方法定义:

如果方法没有返回值,则此方法必须输出结果

如果方法有返回值,则此方法可以不输出结果,但是必须有返回值

返回值用关键字: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;

    }

1.带参数的方法

class ZhaZhiJi

    {

        //榨汁方法

        //给甲方喝的

        string JiaFangZhaZhi(string shuiGuo) {

            string s = "来一杯"+shuiGuo+"汁";

            return s;

        }

         static void Main(string[] args)

         {

           ZhaZhiJi zzj = new ZhaZhiJi();

           zzj.ZhaZhi("苹果");//实际参数:实参

           string st = zzj.JiaFangZhaZhi("榴莲");

           Console.WriteLine(st);

           Console.ReadKey();

        }

        //自己喝的

        void ZhaZhi(string shuiGuo)//形式参数:形参

        {

            Console.WriteLine("来一杯"+shuiGuo+"汁");

        }

    }

1.局部变量和成员变量

string name ;//成员变量,系统默认提供一个值

void Print(){

      int age=20;//局部变量

      Console.WriteLine(age);

      Console.WriteLine(name);

}

作用域不同

局部变量的作用域仅限于定义它的方法

成员变量的作用域在整个类内部都是可见的

初始值不同

系统会给成员变量一个初始值

系统不会给局部变量赋予初始值

1.static

静态变量和实例变量两者的区别:

1、静态变量在内存中只有一个内存空间,在加载类的过程中完成静态变量的内存分配;每创建一个新的实例对象,就会为实例变量分配不同的内存

2、静态变量可以直接通过类名来访问,实例变量需要通过各个对象访问

//static:静态

        int x = 1;

        static int y = 1;//静态变量、类变量

        void Get()

        {

            x++;

            y++;

            Console.WriteLine(x + "\t" + y);

        }

        static void Main(string[] args)

        {

            Test12 t1 = new Test12();

            Console.WriteLine(t1.x + "\t" + Test12.y);

            t1.Get();

            Test12 t2 = new Test12();

            t2.Get();

}

静态方法和实例方法两者的区别:

  1. 静态方法只能访问静态变量;实例方法既可以访问实例变量,也可以访问静态变量
  2. 静态方法在Main方法中可以直接使用;实例方法在Main方法中必须通过对象调用

class Test13

    {       

        int value=10;//成员变量、实例变量

        static int a = 2;//静态变量、类变量

        void Print3()//成员方法、实例方法

        {

            Console.WriteLine(value);

            Console.WriteLine(a);

        }

       static void Print()//静态方法、类方法

        {

            //Console.WriteLine(value);

            Console.WriteLine(a);

        }

       //static void Main(string[] args)

       //{

       //    Test13 t1 = new Test13();

       //    Print();

       //    t1.Print3();

       //    //int a = 10;

       //    //Print(a);

       //    //Console.WriteLine(a);

         

       //    //Print2(t1);

       //    //Console.WriteLine(t1.value);

       //    //t1.Get();

       //    //t1.Get();

       //    //t1.Get();

       //    //t1.value = 10;

       //    //Test13 t2 = t1;//对象的引用

       //    //t2.value++;

       //    //Console.WriteLine(t1.value + "\t" + t2.value);

       //}

  1. this

//this:指的是类的实例

this的用法:

1、当成员变量和局部变量同名时,如果想调用成员变量,用this

2、当构造方法互相调用时,用this

        string name;

        int age;

        double salary;

        public Worker():this("杜成", 19, 6000)

        {

            //name = "袁化彬";

            //age = 18;

            //salary = 5000;

            //Console.WriteLine(name + "\t" + age + "\t" + salary);

        }

        //public Worker(string name, int age, double salary):this()

        public Worker(string name, int age, double salary)

        {

            this.name=name;

            this.age = age;

            this.salary = salary;

            Console.WriteLine(name + "\t" + age + "\t" + salary);

        }

1.构造方法

定义:

方法名称和类名一致的方法,没有任何返回类型,并且也没有void。

特征:如果没用写构造方法  系统会默认提供一个无参的构造方法,方法里面是空的

       如果写 会覆盖系统默认的

作用:初始化成员变量

1.方法重载

同一个类中的多个方法可以有相同的方法名称,但是有不同的参数列表,这就称为方法重载

方法的重载的规则:

  • 方法名称必须相同。
  • 参数列表必须不同。
  • 方法的返回类型可以相同也可以不相同。
  • 仅仅返回类型不同不足以称为方法的重载。

  1. 对象的引用

class Test14  {

        int a = 1;

        void Get()

        {

            Console.WriteLine(a);

        }

        void Get2(Test14 t)//第三种引用

        {

            t.a++;

        }

        Test14 Get3(Test14 t)//第四种引用

        {

            t.a++;

            return t;

        }

        static void Main(string[] args)

        {

            Test14 t = new Test14();

            t.a = 2;//第一种引用

            Test14 t2 = t;//第二种引用

            //Console.WriteLine(t.a+"\t"+t2.a);// 2  2

            //t2.Get();

            //t.Get2(t);

            //Console.WriteLine(t.a + "\t" + t2.a);// 3  3

            Test14 t3 = t.Get3(t);

            t3.a++;

            Console.WriteLine(t.a + "\t" + t3.a);// 4  4

        }

  

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值