访问修饰符
public:类型或成员所在大括号内和外都可以访问它
private:类型或成员所在的大括号内可以访问,大括号外不能访问
面向过程
重点关心解决问题步骤
优点:可以很清晰的看明白问题解决的步骤
代码行数要少一些,性能消耗低一些
缺点:不易维护、不易拓展、不易复用
面型对象
重点关系解决问题过程中参与的对象有哪些,分别由哪些特性和行为。面向对象是把构成问题事务分解成各个对象
优点:易维护、易拓展、易复用
缺点:代码是分散的、行数多一些
性能消耗要高一些
字段就是描述类的特性
[访问修饰符] Class 类名//大驼峰命名法
创建一个类的对象
类名 对象名;
一个对象在创建后,需要进行实例化(初始化)才能使用
类名 对象名=new 类名();
原理:对象在进行new操作后,才分配了内存
类类型是引用类型
using System;
namespace dOOP
{
class Person {
//在类内的字段是可以有初值的
public string name;
public int age;
public char skinColor;
}
class Program
{
static void Main(string[] args)
{
//创建一个人类对象
Person xiaoming = new Person();
xiaoming.age = 18;
Person xiaogang = xiaoming;
xiaogang.age = 20;
Console.WriteLine("xiaoming.age" + xiaoming.age);#region
//栈01 --->堆
int[] array = new int[5];
//栈02 --->堆
Person xiaohong = new Person();
#endregion
}
}
}
字段 Field
using System;
namespace dOOP
{
class Person {
//在类内的字段是可以有初值的
public string name;
public int age;
public char skinColor;
}
class Program
{
static void Main(string[] args)
{
//创建一个人类对象
Person xiaoming = new Person();
xiaoming.age = 18;
Person xiaogang = xiaoming;
xiaogang.age = 20;
Console.WriteLine("xiaoming.age" + xiaoming.age);#region
//栈01 --->堆
int[] array = new int[5];
//栈02 --->堆
Person xiaohong = new Person();
#endregion
#region 字段的声明与使用
Person xiaowang = new Person();
xiaowang.name = "小王";
xiaowang.age = 18;
xiaowang.skinColor = 'Y';
Console.WriteLine("姓名:{0},年龄{1},肤色{2}",xiaowang.name,xiaowang.age,xiaowang.skinColor);#endregion
}
}
}
方法
方法就是封装了一段有特定功能的代码段
方法就是用来描述一个类的行为
方法创建
访问修饰符 返回值类型 方法名(参数列表)
{
代码块
return值
}
方法的调用
返回值类型 变量名=对象名.方法名(实参列表);
using System;
namespace dOOP
{
class Person {
//在类内的字段是可以有初值的
public string name;
public int age;
public char skinColor;
public bool hasSharpen = false;
public void GetWood() {
Console.WriteLine("上山砍柴");
if (hasSharpen) {
Console.WriteLine("砍了10斤柴");
}
else{
Console.WriteLine("砍了2斤柴");
}
}
public void Sharpen() {
hasSharpen = true;
Console.WriteLine("磨刀中");
}
}
class Program
{
static void Main(string[] args)
{
//创建一个人类对象
Person xiaoming = new Person();
xiaoming.age = 18;
Person xiaogang = xiaoming;
xiaogang.age = 20;
Console.WriteLine("xiaoming.age" + xiaoming.age);#region
//栈01 --->堆
int[] array = new int[5];
//栈02 --->堆
Person xiaohong = new Person();
#endregion
#region 字段的声明与使用
Person xiaowang = new Person();
xiaowang.name = "小王";
xiaowang.age = 18;
xiaowang.skinColor = 'Y';
Console.WriteLine("姓名:{0},年龄{1},肤色{2}",xiaowang.name,xiaowang.age,xiaowang.skinColor);
#endregion
xiaoming.GetWood();
xiaohong.Sharpen();
xiaohong.GetWood();
}
}
}
字段
描述类的特性
可以有初值
小驼峰命名法
方法
方法是描述一个类的行为
一个方法尽量就完成一件小的事情
如果要完成一件大事,先定义一些方法,完成这个大事拆分出来的小事,最后按照流程,在大事方法中调用这些小事的方法
使用大驼峰命名法命名
无参无返回值的方法
public void IntroduceMe(){ }
this关键词
this表示当前对象,如无重名现象,可以省略
帮助注释
可以添加帮助注释的有:类 方法 字段 属性
帮助注释的优点:在使用类、方法、字段、属性的时候,可以在提示框中显示帮助注释的内容
无参有返回值方法
return关键词
返回结果
终止程序运行
using System;
namespace cMethod
{
enum HairCount
{
Dense,
Sparse,
Mediterranean,
Bareheader
}
enum ProgrmmerLever
{
Primary,
Intermediate,
ChiefInspector,
CTO
}
/// <summary>
/// 改变世界的程序员
/// </summary>
class Programmer {
/// <summary>
/// 发量
/// </summary>
public string name;
/// <summary>
/// 发量
/// </summary>
public HairCount hairCount;
public int age;
private string[] underbrag = { "钱多", "话少", "死的快", "发量小", "有程序员鼓励师" };
/// <summary>
/// 自我介绍
/// </summary>
public void IntroduceMyself() {
Console.WriteLine($"我叫{name},今年{age}岁");
}
/// <summary>
/// 获取程序员等级
/// </summary>
public ProgrmmerLever GetProgrammerLevel() {
ProgrmmerLever result = ProgrmmerLever.Primary;
switch (hairCount) {
case HairCount.Dense:
return ProgrmmerLever.Primary;
case HairCount.Sparse:
return ProgrmmerLever.Intermediate;
case HairCount.Mediterranean:
return ProgrmmerLever.ChiefInspector;
case HairCount.Bareheader:
return ProgrmmerLever.CTO;
default:
return ProgrmmerLever.Primary;
}
}
public string RandomUnderbrag() {
//创建Random对象
Random random = new Random();
//随机一个数组下标[0,5)
int num=random.Next(0, underbrag.Length);
string words = underbrag[num];
//返回结果
return words;
}
}
class Program
{
static void Main(string[] args)
{
Programmer xiaoming = new Programmer();
xiaoming.name = "小明";
xiaoming.age = 20;
xiaoming.hairCount = HairCount.Mediterranean;
//调用方法(执行方法内的代码)
xiaoming.IntroduceMyself();
//调用方法,接受结果
ProgrmmerLever xiaomingLevel = xiaoming.GetProgrammerLevel();
Console.WriteLine("xiaoming的程序员等级是" + xiaomingLevel);
string words=xiaoming.RandomUnderbrag();
Console.WriteLine("自黑时间到了:"+words);
}
}
}