oop:面向对象,全程叫object oriented programming
面向对象的三大特性:1.封装
2.继承
3.多态
类的定义:实际上就是具有相同属性和特征的一类事物的抽象集合.
类和对象的关系:类是对象的抽象,对象是类的实例.
对象的定义:抽象类的实例.
//小例子
昨天,我去了工商银行去办银行卡,在我前面有五十个人.
香港著名歌星张学友来上海拍广告.
菜市场进了一批蔬菜,然后张三去买菜,问老板,都有什么菜呢?老板说,有茄子,黄瓜,藕等等.
1.知道了类的定义,如何定义类?
使用系统关键字
(访问修饰符internal)class + 类名{
}
注意一点:类和类之间属于同级关系
2.如何描述类的特征
叫字段或者类成员变量
字段和普通局部变量的区别:
局部变量没有初始化,访问该局部变量时编译会不通过.但字段可以
3.实例化对象
采用系统关键字new + 类名()
new关键字的作用:
4.如何描述类的行为
叫方法或者函数
语法格式:修饰词 + 函数返回值 + 函数名(方法名)(形参列表)
{
方法体(函数体);
}
5.修饰符()
public:公开的意思,常用语修饰类,修饰类字段,修饰类中方法
就是非本类之外也可以访问.
private:私有的意思,常用语修饰字段,方法.也是我们c#语言中默认的修饰符.
就是只有本类才可以访问.
internal:程序集内部可以访问
protected:基类&&派生类可以访问
6.方法的返回值
如果方法有返回值,就返回方法的实际类型的返回值,关键字return + 返回内容;
如果方法内存在多个return语句,值返回第一个return语句块,剩下的不会执行.
如果方法没有返回值,可以省略return不写,直接写方法体内的方法快即可.
四种方法:
有参有返回值
有参无返回值
无参有返回值
无参无返回值
7.枚举变量
格式:enum + 枚举名称
{
枚举变量1,
枚举变量2,
枚举变量3
}
8.构造函数(重点掌握)
构造函数的作用:让一个类更完整.
构造函数其实就是用来创建对象,初始化字段用的
构造函数的语法格式:修饰符 + 类名()
{
}
构造函数的特点:
1.构造函数压根就没有返回值
2.构造函数的名称必须与类名保持一致
3.构造函数支持方法重载,换句话说就是可以有多个构造函数,但是参数个数必须不相同.
4.构造函数无法进行手动调用(系统自动调用)
5.如果类中不包含构造函数,那么系统会自动的为该类添加一个无参数的构造函数
6.如果类中存在带有参数的构造函数,那么系统不会为该类添加无参的构造函数.那么
面向对象的三大特性:1.封装
2.继承
3.多态
类的定义:实际上就是具有相同属性和特征的一类事物的抽象集合.
类和对象的关系:类是对象的抽象,对象是类的实例.
对象的定义:抽象类的实例.
//小例子
昨天,我去了工商银行去办银行卡,在我前面有五十个人.
香港著名歌星张学友来上海拍广告.
菜市场进了一批蔬菜,然后张三去买菜,问老板,都有什么菜呢?老板说,有茄子,黄瓜,藕等等.
1.知道了类的定义,如何定义类?
使用系统关键字
(访问修饰符internal)class + 类名{
}
注意一点:类和类之间属于同级关系
2.如何描述类的特征
叫字段或者类成员变量
字段和普通局部变量的区别:
局部变量没有初始化,访问该局部变量时编译会不通过.但字段可以
3.实例化对象
采用系统关键字new + 类名()
new关键字的作用:
4.如何描述类的行为
叫方法或者函数
语法格式:修饰词 + 函数返回值 + 函数名(方法名)(形参列表)
{
方法体(函数体);
}
5.修饰符()
public:公开的意思,常用语修饰类,修饰类字段,修饰类中方法
就是非本类之外也可以访问.
private:私有的意思,常用语修饰字段,方法.也是我们c#语言中默认的修饰符.
就是只有本类才可以访问.
internal:程序集内部可以访问
protected:基类&&派生类可以访问
6.方法的返回值
如果方法有返回值,就返回方法的实际类型的返回值,关键字return + 返回内容;
如果方法内存在多个return语句,值返回第一个return语句块,剩下的不会执行.
如果方法没有返回值,可以省略return不写,直接写方法体内的方法快即可.
四种方法:
有参有返回值
有参无返回值
无参有返回值
无参无返回值
7.枚举变量
格式:enum + 枚举名称
{
枚举变量1,
枚举变量2,
枚举变量3
}
8.构造函数(重点掌握)
构造函数的作用:让一个类更完整.
构造函数其实就是用来创建对象,初始化字段用的
构造函数的语法格式:修饰符 + 类名()
{
}
构造函数的特点:
1.构造函数压根就没有返回值
2.构造函数的名称必须与类名保持一致
3.构造函数支持方法重载,换句话说就是可以有多个构造函数,但是参数个数必须不相同.
4.构造函数无法进行手动调用(系统自动调用)
5.如果类中不包含构造函数,那么系统会自动的为该类添加一个无参数的构造函数
6.如果类中存在带有参数的构造函数,那么系统不会为该类添加无参的构造函数.那么
此时创建对象,必须使用带有参数的那个构造函数
using System;
namespace OOP
{
//定义枚举
enum Gender
{
男,
女
}
//定义了一个人类
class Person
{
//特征
//名字
public string name;
//年龄
public int age;
//性别
// public string gender;
//性别枚举
public Gender gender;
//行为1----吃
public void Eat(string foodName){
Console.WriteLine ("{0}在吃{1}", name, foodName);
}
//行为2----打招呼
public string SayHi(){
return "我是" + name + ",大家好吗?";
}
//拼接字符串
public string Pinjie(string str1,string str2)
{
return str1 + str2;
}
//返回最大的值
public int ReturnMaxValue(int num1,int num2){
return num1 > num2 ? num1 : num2;
}
//求和1~n
public int Sum(int n){
int sum = 0;
for (int i = 1; i <= n; i++) {
sum += i;
}
return sum;
//递归算法求和
// if (n == 0) {
// return 0;
// } else {
// return n + Sum (n - 1);
// }
}
//构造函数
public Person(){
Console.WriteLine ("构造函数被调用!~");
}
//
//this关键字:代表这个类的这个对象
public Person(string name,int age){
this.name = name;
this.age = age;
}
}
class MainClass
{
// static int a;
// public static void Main (string[] args)
// {
//报错原因:局部变量没有被初始化
// int a;
// Console.WriteLine (a);
//没有报错原因,因为此时a变量为类的成员也就是字段
// Console.WriteLine (MainClass.a);
//实例化人类对象
//此时的p就是对象Instance
// Person p = new Person ();
// p.name = "马志蛇";
// p.age = 18;
// p.gender = "X";
// p.Eat ("屎");
// string s = p.SayHi ();
// Console.WriteLine (p.SayHi ());
//
// Person p1 = new Person ();
// p1.name = "黄海";
// p1.age = 19;
// p1.gender = "XXY";
// p1.Eat ("马志蛇吃剩下的屎");
//
// if (p == p1) {
// Console.WriteLine ("p和p1为同一对象!");
// }
//课堂练习
//1.编程定义一个方法,功能是把两个字符串进行拼接,得到一个新的字符串;
// Console.WriteLine(new Person().Pinjie("中国","我的母亲"));
//2.定义一个方法,比较两个int类型的数据,得到其最大值;
// Console.WriteLine(new Person().ReturnMaxValue(10,9));
//3.编写方法int SumValue(int n);计算1~n的和;
// Person p = new Person ();
// Console.WriteLine (p.Sum (5));
//枚举演示:
//访问枚举变量是用枚举名.的方式调用
//在unity中,枚举常用来判断游戏状态(游戏开始,游戏暂停,游戏结束)
// Person p = new Person();
// p.name = "刘德华";
// p.age = 55;
// p.gender = Gender.男;
// Console.WriteLine ("性别是:{0}",p.gender);
//构造函数演示
// Person p = new Person();
// Person p = new Person("刘德华",55);
// Console.WriteLine (p.name);
// Person p1 = new Person ();
}
}