Lession04类和对象的应用
2021-06-08 本文已影响0人
任人渐疏_Must
面向过程---------->面向对象
/*
* 1.面向过程---------->面向对象
*
* 面向过程:面向的是完成这件事的过程,强调的是完成这件事的动作
* 把大象塞进冰箱里
* 1、打开冰箱门
* 2、把大象塞进去,
* 3、关闭冰箱门
* (强调的是动作)
*
*张三 瘦小 矮
*张三踩着小板凳打开冰箱门
*张三找李四帮忙把大象塞进冰箱里,
*张三踩着板凳关闭冰箱门
*
*李四 190cm 非常大力气
*1、李四自己就能打开冰箱门
*2、李四自己将大象塞进冰箱里,
*3、李四自己关闭冰箱门
*
*如果我们用面向过程的思想来解决这件事儿,当执行这件事的人的不同的时候,
*我们需要为每个不同的人量身定做解决事情的方法。
*
*
*
*
*面向对象:找个对象帮你做事
*把大象塞进冰箱里 你 (这里有三个对象,大象,冰箱,你)
*(用你做对象的话,就成上面的面向对象了)
*(每个步骤都有冰箱,可以把冰箱作为对象)
*1.冰箱门可以被打开
*2.大象可以被塞进冰箱里
*3、冰箱门可以被关闭
* (可以屏蔽了所有人的差异)
*
* 张三
* 张三 调用 第一个方法 1 (冰箱门开了)
* 张三 调用 第二个方法 2 (大象塞进去了)
* 张三 调用 第三个方法 3 (冰箱门关了)
*
* 李四
* 李四->1
* 李四->2
* 李四->3
*
* 面向对象:意在写出一个通用的代码,屏蔽差异
*
*
*
*
* 如何找对象:
* 对于摄影家而言,世界是由一张张照片组成
* 对于画家而言,世界是由一幅幅画组成
* 对于程序员而言,世界是由对象组成的,万物皆对象
*
* 例子一:
* 关门
* 面向过程:关门 (主动的)
* 张三 一脚把门踹紧了
* 李四 轻轻的把门带上了
* 王五 门没关严,留了个尾巴
*
* 面向对象:关门 (被动的)
* 门可以被关闭
*
* 试着描述张三和李四的特征和行为
* 姓名:张三
* 性别:男
* 身高:180cm
* 体重:70KG
* 年龄:18
* 看书,打游戏,打篮球
*
* 姓名:李四
* 性别:男
* 身高:180cm
* 体重:65KG
* 年龄:18
* 打游戏,踢足球,听音乐
*
* 我们在代码中描述一个对象,通过描述这个对象的属性和方法
*
*
* 我们把这些具有相同属性和相同方法的对象进行进一步的封装,抽象出来,类这个概念
* 类就是个模子,确定了对象应该具有的属性和方法
* 对象是根据类创建出来的
* 类就像一个盖大楼的图纸,对象就是盖出来的大楼
*
*/
类的基本语法
/*
*
* 语法:
* [访问修饰符] class 类名
* {
* 成员变量;
* 成员方法;
*
*
*
* }
* 写好了一个类之后,我们需要创建这个类的对象
* 那么,我们管创建这个类的对象的过程称之为实例化
* 使用关键字 new
*
* this:表示当前对象
* 类是不占内存的,对象占
*
*
* 当我们创建好一个类的对象后,需要给这个对象的每个属性去赋值。
* 我们管这个过程称之为对象的初始化。
*
*/
class Program
{
static void Main(string[] args)
{
//实例化一个对象
Student stu = new Student();
//调用方法
stu.Study();
Add add = new Add();
int sum = add.sum(10, 20);
Console.WriteLine("Add类中的求和结果是{0}", sum);
Console.ReadKey();
}
}
class Student
{
public int id; // 学生编号
public string name;//学生姓名
public int age;//学生年龄
//学生共同的方法——学习
public void Study()
{
Console.WriteLine("好好学习,天天向上");
}
}
class Add
{
/// <summary>
/// 求两个整数类型的和
/// </summary>
/// <param name="n1">第一个整数</param>
/// <param name="n2">第二个整数</param>
/// <returns>两个整数的和</returns>
public int sum(int n1,int n2)
{
return n1 + n2;
}
}
构造方法
public class Student
{
/* 构造函数是一个特殊的方法:
* 1)、构造函数没有返回值,连void也不能写。
*2)、构造函数的名称必须跟类名一样。
*9、this关键字
* 代表当前类的对象
创建对象的时候会执行构造函数
构造函数是可以有重载的。
*
*
* 类当中会有一个默认的无参数的构造函数,当你写一个新的构造函数之后,不管是有参数的还是
无参数的,那个默认的无参数的构造函数都被干掉了。
8、new关键字
Person zsPerson=new Person();
new帮助我们做了3件事儿:
1)、在内存中开辟一块空间
2)、在开辟的空间中创建对象
3)、调用对象的构造函数进行初始化对象
*/
//默认的构造函数,如果我们不自定义构造函数的话,就是在使用这个构造函数
public Student()
{
}
public Student(int id,string name,int age)
{
this.Id = id;
this.Name = name;
this.Age = age;
}
public int Id; // 学生编号
public string Name;//学生姓名
public int Age;//学生年龄
//学生共同的方法——学习
public void Study()
{
Console.WriteLine("我是编号为{0},年龄{1}的{2},我要好好学习,天天向上",Id,Age,Name);
}
}
class Program
{
static void Main(string[] args)
{
//类的实例化
Student zsStu = new Student(1001,"张三",19);
//对象初始化
//zsStu.Id = 1001;
//zsStu.Name = "张三";
//zsStu.Age = 19;
zsStu.Study();
//类的实例化
Student lsStu = new Student(1002,"李四",18);
//对象初始化
//lsStu.Id = 1002;
//lsStu.Name = "李四";
//lsStu.Age = 18;
lsStu.Study();
Console.ReadKey();
}
}
命名空间
/*
* 1、命名空间:
* 语法:namespace 命名空间的名称{
* //该名称空间的所有类都放在这里
*
* }
* 可以认为类是属于命名空间的。
* 如果在当前项目中没有这个类的命名空间,需要我们手动的导入这个类所在的
* 命名空间。
* 1)、用鼠标去点
* 2)、alt+shift+F10
* 3)、记住命名空间,手动的去引用
*
* 2、在一个项目中引用另一个项目的类
* 1)、添加引用
* 2)、引用命名空间
*
*
*
*/