第一次课:类和对象
1.关于类和对象的概念
万事万物皆对象,现世界中的所有事物(东西)都是对象
1/3是个对象,1/4也是个对象
苹果不是对象,当提到这个概念的时候,你并不知道“苹果”所描述是哪一个具体的苹果
对象是由类所创建的
类(分类,种类,类别)应该具备它所描述事物的共公的特征和功能
类里面描述事物的特征一般用成员变量,因为它是一个具体值
类里面描述事物的功能一般用成员函数,因为它是一个具体过程
所以,类中应该包括变量和函数
如:
class Person
{
public int color;
//.....
public Person()
{
}
public void Eat()
{
//....
}
}
对象是由类创建的(也就是实例化),如 Person obj = new Person();
创建是通过new关键字来实现的,new关键字会在内存申请一片连续的存储空间用来存放这个对象所包含的所有成员变量和成员函数
类在实例化的时候,也就是new的时候,也就是类创建对象的时候,是同一个时间,是一回事
//2.构造函数
构造函数:类在实例化的时候能够自动调用的函数,它有三个特征
1.与类同名 2.无返回值 3.自动调用
1,2两点告诉大家怎么写构造函数,3点告诉大家怎么用构造函数
关于成员变量和成员函数的调用
无论是成员变量还是成员函数,要想使用它,必须先实例化它;
如果要使用某个对象的成员变量或成员函数,但是它没有实例化,不能使用
所以先实例化:Person obj = new Person();
成员变量的使用:obj.成员变量名
成员函数的使用:obj.成员函数()
//3.关于命名空间:
1.归纳类:把具有相似功能的类放在一起,也就是放在同一个命名空间中
2.区分同名的类:在同一个命名空间中,不存在同名类
第二次课
1.关于封装
封装:把公有的(public)成员变量定义成私有的(private),让外部不能直接访问
如:
class Person
{
private int color;
//.....
public Person()
{
}
public void Eat()
{
//....
}
}
如果要改变某个对象的私有成员变量值,只有一个唯一的办法,通过公有的函数访问
2.关于值类型数据和引用类型数据的区别
这种区别具现在函数的传数传递的时候,
向一个函数传参时,如果传的是值类型的数据: 传进函数的,一定是值的副本(复印件)
向一个函数传参时,如果传的是引用类型的数据:传进函数的,一定是值本身
3.装箱和拆箱
装箱:把值类型的数据变成引用类型数据,如:
//装箱
int a = 20;
Int32 obj = a;
拆箱:把引用类型的数据变成值类型的数据,如:
//拆箱
Int32 obj = new Int32();
obj = 1000;
int num = obj;
第三次课
1.关于静态的(static)
静态的(static)就是不需要实例化就可以直接调用的,使用方法:
类名.静态成员变量名
类名.静态成员函数名
静态的东西,只要被定义了,就会在内存中占用一片空间,所以这种东西,不需要再实例化就可以调用,
也正是因为这个原因,被定义成静态的东西,它就不属于哪一个对象,而是属于这个类,由(类名.)来访问
2.关于ref和out关键字
无论是ref还是out,都是使用在函数的参数的定义前面,起到的作用,是把参数本身的内容传到函数中,而不是传一个副本进入函数
但是它们有区别:
ref是注重传参,所以在传递之前,ref的参数一定要有值
out是注重返回,所以在传递之前,out的参数可以没有值
3.关于重载
重载:类的函数具有相同的函数名,不同的参数列表和返回值(不允许只是返回值的不同),这就是函数的重载