文章目錄
- 1 引入例子
- 2 創建類
- 2.1 類的訪問屬性
- 2.2 英雄 特點類
- 2.3 英雄信息打印
- 3 靜態變量static
- 4 類 調用 類
- 4.1 非靜態 成員函數
- 4.2 靜態 成員函數
1 引入例子
比如游戲中 描述英雄的角色,
我們可以像下面這樣,給每一個英雄特點及擁有技能分別定義變量;
(看起來有多又雜,還容易西出錯)
using System;
//類型
//關鍵字
class Program
{static void Main(){Console.WriteLine("月黑風高殺人夜");Console.WriteLine("(請按任意鍵繼續。。。)"); Console.ReadKey();Console.WriteLine("微風吹動著路邊的小草");Console.WriteLine("(請按任意鍵繼續。。。)"); Console.ReadKey();Console.WriteLine("隱約在路的盡頭有一個人影");Console.WriteLine("(請按任意鍵繼續。。。)"); Console.ReadKey();Console.WriteLine("走近一看,這人叫"); string name1 = Console.ReadLine();Console.WriteLine("原來你就是"+ name1);Console.WriteLine("(請按任意鍵繼續。。。)");Console.ReadKey();string xingbie1 = "男";int nianling1 = 18;int shanghai1 = 100;int xueliang1 = 100;int shengao1 = 175;string jineng1 = "飛檐走壁"; int jineng1shanghai = 20;string jineng2 = "飛沙走右";int jineng2shanghai = 30;Console.WriteLine("性別: " + xingbie1);Console.WriteLine("年齡: " + nianling1);Console.WriteLine("基礎傷害: " + shanghai1);Console.WriteLine("基礎血量: " + xueliang1);Console.WriteLine("身高:" + shengao1);Console.WriteLine("技能1:" + jineng1);Console.WriteLine("技能1傷害: " + jineng1shanghai);Console.WriteLine("技能2:" + jineng2);Console.WriteLine("技能2傷害: " + jineng2shanghai);Console.ReadKey();Console.WriteLine("此時遠處傳來一個女人的聲音");Console.WriteLine("(請按任意鍵繼續。。。)");Console.ReadKey();Console.WriteLine("走進一看原來是: ");Console.WriteLine("(請按任意鍵繼續。。。)");Console.ReadKey();Console.WriteLine("請輸入女俠的名稱: ");string name11 = Console.ReadLine();Console.WriteLine("原來你就是" + name11);Console.WriteLine("(請按任意鍵繼續。。。)");Console.ReadKey();string xingbie11 = "女";int nianling11 = 18;int shanghai11 = 100;int xueliang11 = 100;int shengao11 = 165;string jineng11 = "飛檐走壁2.0";int jineng11shanghai = 40;string jineng22 = "飛沙走右2.0";int jineng22shanghai = 60;Console.WriteLine("性別: " + xingbie11);Console.WriteLine("年齡: " + nianling11);Console.WriteLine("基礎傷害: " + shanghai11);Console.WriteLine("基礎血量: " + xueliang11);Console.WriteLine("身高:" + shengao11);Console.WriteLine("技能1:" + jineng11);Console.WriteLine("技能1傷害: " + jineng11shanghai);Console.WriteLine("技能2:" + jineng22);Console.WriteLine("技能2傷害: " + jineng22shanghai);Console.ReadKey();}
}
2 創建類
創建一個Hero類
2.1 類的訪問屬性
class Hero
{string name;string xingbie;int nianling;int shanghai;int xueliang;int shengao;string jineng1;int jineng1shanghai;string jineng2;int jineng2shanghai;
}
實例化 對象,hr,但是hr.訪問不到 類變量,因為 class默認是 private
如果像 C++那樣寫 就會報錯;
2.2 英雄 特點類
class Hero
{public string name;public string xingbie;public int nianling;public int shanghai;public int xueliang;public int shengao;public string jineng1;public int jineng1shanghai;public string jineng2;public int jineng2shanghai;
}
完整代碼
using System;
//類型
//關鍵字
class Program
{static void Main(){Console.WriteLine("月黑風高殺人夜");Console.WriteLine("(請按任意鍵繼續。。。)"); Console.ReadKey();Console.WriteLine("微風吹動著路邊的小草");Console.WriteLine("(請按任意鍵繼續。。。)"); Console.ReadKey();Console.WriteLine("隱約在路的盡頭有一個人影");Console.WriteLine("(請按任意鍵繼續。。。)"); Console.ReadKey();Console.WriteLine("走近一看,這人叫");//實例化Hero hr1 = new Hero();hr1.name = Console.ReadLine();Console.WriteLine("原來你就是"+ hr1.name);Console.WriteLine("(請按任意鍵繼續。。。)");Console.ReadKey();hr1.xingbie = "男";hr1.nianling = 18;hr1.shanghai = 100;hr1.xueliang = 100;hr1.shengao = 175;hr1.jineng1 = "飛檐走壁";hr1.jineng1shanghai = 20;hr1.jineng2 = "飛沙走右";hr1.jineng2shanghai = 30;Console.WriteLine("性別: " + hr1.xingbie);Console.WriteLine("年齡: " + hr1.nianling);Console.WriteLine("基礎傷害: " + hr1.shanghai);Console.WriteLine("基礎血量: " + hr1.xueliang);Console.WriteLine("身高:" + hr1.shengao);Console.WriteLine("技能1:" + hr1.jineng1);Console.WriteLine("技能1傷害: " + hr1.jineng1shanghai);Console.WriteLine("技能2:" + hr1.jineng2);Console.WriteLine("技能2傷害: " + hr1.jineng2shanghai);Console.ReadKey();Console.WriteLine("此時遠處傳來一個女人的聲音");Console.WriteLine("(請按任意鍵繼續。。。)");Console.ReadKey();Console.WriteLine("走進一看原來是: ");Console.WriteLine("(請按任意鍵繼續。。。)");Console.ReadKey();Console.WriteLine("請輸入女俠的名稱: ");//實例化Hero hr2 = new Hero();hr2.name = Console.ReadLine();Console.WriteLine("原來你就是" + hr2.name);Console.WriteLine("(請按任意鍵繼續。。。)");Console.ReadKey();hr2.xingbie = "女";hr2.nianling = 18;hr2.shanghai= 100;hr2.xueliang = 100;hr2.shengao = 165;hr2.jineng1 = "飛檐走壁2.0";hr2.jineng1shanghai = 40;hr2.jineng2 = "飛沙走右2.0";hr2.jineng2shanghai = 60;Console.WriteLine("性別: " + hr2.xingbie);Console.WriteLine("年齡: " + hr2.nianling);Console.WriteLine("基礎傷害: " + hr2.shanghai);Console.WriteLine("基礎血量: " + hr2.xueliang);Console.WriteLine("身高:" + hr2.shengao);Console.WriteLine("技能1:" + hr2.jineng1);Console.WriteLine("技能1傷害: " + hr2.jineng1shanghai);Console.WriteLine("技能2:" + hr2.jineng2);Console.WriteLine("技能2傷害: " + hr2.jineng2shanghai);Console.ReadKey();}
}class Hero
{public string name;public string xingbie;public int nianling;public int shanghai;public int xueliang;public int shengao;public string jineng1;public int jineng1shanghai;public string jineng2;public int jineng2shanghai;
}
2.3 英雄信息打印
將輸出 打印信息,封裝到類里面
class Hero
{//成員變量public string name;public string xingbie;public int nianling;public int shanghai;public int xueliang;public int shengao;public string jineng1;public int jineng1shanghai;public string jineng2;public int jineng2shanghai;//成員函數public void ShowInfo(){Console.WriteLine("性別: " + xingbie);Console.WriteLine("年齡: " + nianling);Console.WriteLine("基礎傷害: " + shanghai);Console.WriteLine("基礎血量: " + xueliang);Console.WriteLine("身高:" + shengao);Console.WriteLine("技能1:" + jineng1);Console.WriteLine("技能1傷害: " + jineng1shanghai);Console.WriteLine("技能2:" + jineng2);Console.WriteLine("技能2傷害: " + jineng2shanghai);}
}
完整代碼
using System;
//類型
//關鍵字
class Program
{static void Main(){Console.WriteLine("月黑風高殺人夜");Console.WriteLine("(請按任意鍵繼續。。。)"); Console.ReadKey();Console.WriteLine("微風吹動著路邊的小草");Console.WriteLine("(請按任意鍵繼續。。。)"); Console.ReadKey();////----------英雄一---------------------/////Console.WriteLine("隱約在路的盡頭有一個人影");Console.WriteLine("(請按任意鍵繼續。。。)"); Console.ReadKey();Console.WriteLine("走近一看,這人叫");//實例化Hero hr1 = new Hero();hr1.name = Console.ReadLine();Console.WriteLine("原來你就是"+ hr1.name);Console.WriteLine("(請按任意鍵繼續。。。)");Console.ReadKey();hr1.xingbie = "男";hr1.nianling = 18;hr1.shanghai = 100;hr1.xueliang = 100;hr1.shengao = 175;hr1.jineng1 = "飛檐走壁";hr1.jineng1shanghai = 20;hr1.jineng2 = "飛沙走右";hr1.jineng2shanghai = 30;//打印英雄信息hr1.ShowInfo();Console.ReadKey();////----------英雄二---------------------/////Console.WriteLine("此時遠處傳來一個女人的聲音");Console.WriteLine("(請按任意鍵繼續。。。)");Console.ReadKey();Console.WriteLine("走進一看原來是: ");Console.WriteLine("(請按任意鍵繼續。。。)");Console.ReadKey();Console.WriteLine("請輸入女俠的名稱: ");//實例化Hero hr2 = new Hero();hr2.name = Console.ReadLine();Console.WriteLine("原來你就是" + hr2.name);Console.WriteLine("(請按任意鍵繼續。。。)");Console.ReadKey();hr2.xingbie = "女";hr2.nianling = 18;hr2.shanghai= 100;hr2.xueliang = 100;hr2.shengao = 165;hr2.jineng1 = "飛檐走壁2.0";hr2.jineng1shanghai = 40;hr2.jineng2 = "飛沙走右2.0";hr2.jineng2shanghai = 60;//打印英雄信息hr2.ShowInfo();Console.ReadKey();}
}class Hero
{//成員變量public string name;public string xingbie;public int nianling;public int shanghai;public int xueliang;public int shengao;public string jineng1;public int jineng1shanghai;public string jineng2;public int jineng2shanghai;//成員函數public void ShowInfo(){Console.WriteLine("性別: " + xingbie);Console.WriteLine("年齡: " + nianling);Console.WriteLine("基礎傷害: " + shanghai);Console.WriteLine("基礎血量: " + xueliang);Console.WriteLine("身高:" + shengao);Console.WriteLine("技能1:" + jineng1);Console.WriteLine("技能1傷害: " + jineng1shanghai);Console.WriteLine("技能2:" + jineng2);Console.WriteLine("技能2傷害: " + jineng2shanghai);}
}
3 靜態變量static
- static變量可以直接被 Hero.調用,
- 而非靜態變量,需要實例化之后才可以調用
class Hero
{//static變量可以直接被 Hero.調用,而不用實例化static public string str1 = "月黑風高殺人夜";static public string str2 = "請按任意鍵繼續。。。";public string name;//static函數只能訪問static變量;static public void fun(){Console.WriteLine(str1);Console.WriteLine(str2);//Console.WriteLine(name);//非靜態變量 報錯}
}
//static變量可以直接被 Hero.調用,而不用實例化
using System;
//類型
//關鍵字
class Program
{static void Main(){Hero.str1 = "微風吹動著路邊的小草";Hero.str2 = "隱約在路的盡頭有一個人影";Hero.fun();}
}class Hero
{//static變量可以直接被 Hero.調用,而不用實例化static public string str1 = "月黑風高殺人夜";static public string str2 = "請按任意鍵繼續。。。";public string name;//static函數只能訪問static變量;static public void fun(){Console.WriteLine(str1);Console.WriteLine(str2);//Console.WriteLine(name);//非靜態變量 報錯}
}
4 類 調用 類
ShowInfo可以單獨寫一個類,Hero類
和 ShowInfo類
分開;
將Hero類
作為參數傳給 ShowInfo類的
成員函數,以便于打印信息,
class Hero
{//成員變量public string name;public string xingbie;public int nianling;public int shanghai;public int xueliang;public int shengao;public string jineng1;public int jineng1shanghai;public string jineng2;public int jineng2shanghai;
}
4.1 非靜態 成員函數
將Hero類
作為參數傳給 ShowInfo類的
成員函數,以便于打印信息,
class ShowInfo
{
//將Hero類,作為參數傳給 ShowInfo類的成員函數,以便于打印信息,public void ShowHeroInfo(Hero hero){Console.WriteLine("性別: " + hero.xingbie);Console.WriteLine("年齡: " + hero.nianling);Console.WriteLine("基礎傷害: " + hero.shanghai);Console.WriteLine("基礎血量: " + hero.xueliang);Console.WriteLine("身高:" + hero.shengao);Console.WriteLine("技能1:" + hero.jineng1);Console.WriteLine("技能1傷害: " + hero.jineng1shanghai);Console.WriteLine("技能2:" + hero.jineng2);Console.WriteLine("技能2傷害: " + hero.jineng2shanghai);}
}
//打印英雄信息ShowInfo show = new ShowInfo();show.ShowHeroInfo(hr1);
4.2 靜態 成員函數
因為 Hero類涉及不同 英雄,實例化不同對象,需要使用非靜態成員;
而ShowInfo只是顯示信息,不需要區別對待,故而可以用 靜態成員函數
直接調用
class ShowInfo
{//將Hero類,作為參數傳給 ShowInfo類的成員函數,以便于打印信息,public static void ShowHeroInfo(Hero hero){Console.WriteLine("性別: " + hero.xingbie);Console.WriteLine("年齡: " + hero.nianling);Console.WriteLine("基礎傷害: " + hero.shanghai);Console.WriteLine("基礎血量: " + hero.xueliang);Console.WriteLine("身高:" + hero.shengao);Console.WriteLine("技能1:" + hero.jineng1);Console.WriteLine("技能1傷害: " + hero.jineng1shanghai);Console.WriteLine("技能2:" + hero.jineng2);Console.WriteLine("技能2傷害: " + hero.jineng2shanghai);}
}
當 成員函數 ShowHeroInfo(Hero hero)改為 靜態后,調用處出錯(需要做相應修改)
//打印英雄信息ShowInfo.ShowHeroInfo(hr1);
完整代碼
using System;
//類型
//關鍵字
class Program
{static void Main(){Console.WriteLine("月黑風高殺人夜");Console.WriteLine("(請按任意鍵繼續。。。)");Console.ReadKey();Console.WriteLine("微風吹動著路邊的小草");Console.WriteLine("(請按任意鍵繼續。。。)");Console.ReadKey();////----------英雄一---------------------/////Console.WriteLine("隱約在路的盡頭有一個人影");Console.WriteLine("(請按任意鍵繼續。。。)");Console.ReadKey();Console.WriteLine("走近一看,這人叫");//實例化Hero hr1 = new Hero();hr1.name = Console.ReadLine();Console.WriteLine("原來你就是" + hr1.name);Console.WriteLine("(請按任意鍵繼續。。。)");Console.ReadKey();hr1.xingbie = "男";hr1.nianling = 18;hr1.shanghai = 100;hr1.xueliang = 100;hr1.shengao = 175;hr1.jineng1 = "飛檐走壁";hr1.jineng1shanghai = 20;hr1.jineng2 = "飛沙走右";hr1.jineng2shanghai = 30;//打印英雄信息ShowInfo.ShowHeroInfo(hr1);Console.ReadKey();////----------英雄二---------------------/////Console.WriteLine("此時遠處傳來一個女人的聲音");Console.WriteLine("(請按任意鍵繼續。。。)");Console.ReadKey();Console.WriteLine("走進一看原來是: ");Console.WriteLine("(請按任意鍵繼續。。。)");Console.ReadKey();Console.WriteLine("請輸入女俠的名稱: ");//實例化Hero hr2 = new Hero();hr2.name = Console.ReadLine();Console.WriteLine("原來你就是" + hr2.name);Console.WriteLine("(請按任意鍵繼續。。。)");Console.ReadKey();hr2.xingbie = "女";hr2.nianling = 18;hr2.shanghai = 100;hr2.xueliang = 100;hr2.shengao = 165;hr2.jineng1 = "飛檐走壁2.0";hr2.jineng1shanghai = 40;hr2.jineng2 = "飛沙走右2.0";hr2.jineng2shanghai = 60;//打印英雄信息ShowInfo.ShowHeroInfo(hr2);Console.ReadKey();}
}class Hero
{//成員變量public string name;public string xingbie;public int nianling;public int shanghai;public int xueliang;public int shengao;public string jineng1;public int jineng1shanghai;public string jineng2;public int jineng2shanghai;
}
class ShowInfo
{//將Hero類,作為參數傳給 ShowInfo類的成員函數,以便于打印信息,public static void ShowHeroInfo(Hero hero){Console.WriteLine("性別: " + hero.xingbie);Console.WriteLine("年齡: " + hero.nianling);Console.WriteLine("基礎傷害: " + hero.shanghai);Console.WriteLine("基礎血量: " + hero.xueliang);Console.WriteLine("身高:" + hero.shengao);Console.WriteLine("技能1:" + hero.jineng1);Console.WriteLine("技能1傷害: " + hero.jineng1shanghai);Console.WriteLine("技能2:" + hero.jineng2);Console.WriteLine("技能2傷害: " + hero.jineng2shanghai);}
}