一. 类和对象
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();
}
静态方法和实例方法两者的区别:
- 静态方法只能访问静态变量;实例方法既可以访问实例变量,也可以访问静态变量
- 静态方法在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);
//}
- 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.方法重载
同一个类中的多个方法可以有相同的方法名称,但是有不同的参数列表,这就称为方法重载
方法的重载的规则:
- 方法名称必须相同。
- 参数列表必须不同。
- 方法的返回类型可以相同也可以不相同。
- 仅仅返回类型不同不足以称为方法的重载。
- 对象的引用
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
}