一、类与对象的区别和联系
1、类与对象的概念
类:是具有相同数据结构和相同操作的对象的集合
对象:是类的实例化,一切皆对象。
2、类与对象的存在方式
类:是抽象的概念,是模版,确定对象将会拥有的特征(属性)和行为(方法),比如说人类、汽车
对象:是一个你能够看得到、摸到着的具体的实体,比如说张三、张三的车
3、类与对象的属性和方法
属性:对象具有的各种特征,每个对象的每个属性都拥有特定值,例如杨老师和张三的年龄不一样
方法:对象执行的操作,例如杨老师的行为:上课;学生的行为:学习。
人“类”都有:姓名、性别、年龄属性,有说话的方法,张三是一个对象,他的姓名属性的值:张三,性别属性的值:男。年龄属性的值:20张三会说话。
4、类不占内存,对象才占内存
5、类是对象的类型,比如定义了一个类,对其的实例化就是在用类这个类型来定义一个对象。
二、类
1、类的声明
[访问修饰符]class 类名
{
成员;
……..
}
比如:
Class student
{
public string name;
public char sex;
public int age;
public void sayHello()
{
Console.writeline();
}
}
2、类的成员:
(1)字段:例如private string name;
(2)属性:通俗点说,就是定义一个public的具有get、set方法的变量,这个变量是用于保护一个私有变量,可以例如上面的name字段,可以通过点击右键重构中的封装,然后出现get set属性,如以下代码
string name;
public string Name
{
get { return name; }
set { name = value; }
}
Get和set属性是读写属性,只有get方法的属性称为只读属性,这个属性只能读取,不能写入。
(3)类的方法
A、普通方法
[修饰符] 返回类型 方法名(形参列表)
{
方法体
}
B、构造方法
(A)、构造方法是一个特殊的方法,它的名字和类的名字相同,并且没有返回值,连void都可以省略不写。
(B)、当我们定义好一个类之后,如果我们没有写构造方法,那么系统会自动给我们加上一个默认的没有参数的构造方法,在这个构造方法中什么也不做,我们也看不到,可是当我们一旦手写一个构造方法后,系统原先默认给我们添加的那个没有参数的构造方法就不会再给我们添加了。
(C)、使用构造方法的好处:
a、对多个属性进行赋值时,不需要重复的写实例名
b、可以保证用户在new一个对象的时候必须对某一个属性进行赋值
c、在创建对象时,对只读属性进行初始化
(D)构造方法可以有参数,new对象的时候传递参数即可
public Student(string name,char sex,int age)
{
this.name=name;
this.age=age;
this.sex=sex;
}
static void Main(string[] args)
{
Student xl = new Student("小兰", "女", 18);
}
(E)构造方法可以重载,也就是又多个参数不同的构造方法,例如以下代码:
char sex;
int age;
int chinese;
int math;
int eglish;
public Student(string name,char sex,int age)
{
this.name=name;
this.age=age;
this.sex=sex;
}
public Student(string name,char sex,int age,int chinese,int math,int eglish)
{
this.name=name;
this.sex=sex;
this.age=age;
this.chinese=chinese;
this.math=math;
this.eglish=eglish;
}
3、类成员的访问修饰符
Public:该类成员可以由任何代码访问
Private:该类成员只能在本类中被访问,在一个类中定义变量或方法时,没有写访问修饰符,那么默认的访问修饰符是private
Internal:只能在本项目中访问,在类这个级别中,不写访问修饰符默认为internal
Protected:只能在本类中和子类中被访问
4、类的实例化,即创建一个对象
类名 对象名=new 类名()
三、对象
1、对象的创建
类名 对象名 =new 类名()
例如:Student xl = new Student();
2、对象的访问
使用.来访问成员
例如:Student xl = new Student();
xl.Name = "小兰";
xl.age = 18;
xl.sex = '女';
四、静态与非静态数据成员
1、由Static修饰的类的方法或属性,称为静态的数据,由于在一个类中只开辟了一块内存空间存储,并在类的所有对象实例间共享,它不依赖于具体的对象,因此直接通过类名访问,而不是通过类的对象实例访问的。
2、而不由static修饰的方法或属性,称为非静态数据,必须先实例化,再通过实例名.方法名或实例名.属性名来访问
例如:Random r = new Random();
r.Next(1,18);
五、this关键字
This关键字用来代表对象自身,this关键字可以用来解决名称相同的问题。
string name;
char sex;
int age;
public Student(string name,char sex,int age)
{
this.name=name;
this.age=age;
this.sex=sex;
}
上面的代码参数的名和数据成员的名正好相同,通过使用this关键字来区分哪个是参数,哪个是数据成员,此时this关键字指向当前的对象,所以带this的是类的数据成员,而不带的this的是参数
|