더 어려운 추상 클래스는 그가 너무 추상적했다 아마도 때문에 이유를 이해하기 위해, 하, 하, 말도 안되는 것 같습니다. .
긴의 개념 전에이 추상 클래스를 알고,하지만 문제에 얽혀되었지만 : 결국 추상 클래스를 사용하면 실제 개발 과정에서 사용되는 울 있나요? ?
그래서, 오늘은 실제 개발에 완전히 분명이 사람의 역할에, 예를 원한다! !
나는 던전 유령 검객 플레이어가 있다면, 당신은 다음과 같은 기능을 할 수있다 :
1, 내 유령 검객은 한 번 만 기술을 넣어
2, 유령 검객은 내가 가진 능력을 많이
3, 핵심 기술, 내가 할 수 해제하도록 선택할 어떤 능력을
4, 나는 기술을 Daguai 수 있습니다 (기술 Daguai 출시 사운드)
첫 번째보기는 추상 클래스의 구현을 필요로하지 않습니다 :
1 단계 : 기술! !
나는 이제이 두 기술을 정의하는 두 가지 기술이 (가) (위)의 선택과 유령 컷 (킬)가되어 있습니다, 지금 레벨 5 가정 :
공공 클래스 까지 { 공공 무효 말하기 () { // 소리 픽업 Console.WriteLine ( " 이봐! " ); } } 공용 클래스 킬 { 공공 무효 말하기는 () {
// 유령 사운드 잘라 Console.WriteLine ( " 하 ! " ) } }
파트 II : 정의의 유령 검객! !
역할의 무리, 서로 다른 역할은 유령 병사를 만들기 위해 잘라 도전과 유령을 만나고, 거리에서 서로 다른 특성을 가지고 있으므로.
공공 클래스 검객 { // 두 기술에 해당하는 개인 , 최대까지 개인 킬 (kill) 죽여; // 해제 할 기술 선택 공공 무효 선택 ( 개체 기술을) { 경우 (스킬 입니다 위) { 최대 = (위) 기술을, 킬 (kill) = 널 (null)을 ; } 다른 { 킬 (kill) = (킬) 기술, 최대 = 널 (null) ; } } // 다른 기술이 다른 사운드 릴리스에 해당 해제 공공 무효 ) 히트 ( { Console.WriteLine ( " 시작 Daguai을! " ); IF (킬 (kill) == null이 ) { up.Speak를 (); } 다른 사람을 { 킬 (kill) .Speak () } } }
제 III 부 : 거리에 유령 검객의 전체 유령 검객의 예는, 제 이름은 내 유령 유령 검객 검객 유일한 ID입니다.
클래스 프로그램 { 정적 무효 메인 ( 문자열 []에 args) { // 유령 검객 아사히 아사히 아기의 인스턴스 검객 xuxubaobao = 새로운 새로운 검객 (); // 선택하고 밖으로 방출하여 아사히 아사히 아기의 선택을 xuxubaobao.Select을 ( 새로운 새로운 업 ()); xuxubaobao.Hit (); // 아사히 아사히 아기 선택 유령 잘라 놓아 xuxubaobao.Select을 ( 새로운 새로운 킬 ()); xuxubaobao.Hit (); } }
문제 없습니다, 모든 것이 너무 아름다워입니다! ! 거물 재미 있고, 우리 프로그래머는 미소를 지었다.
그러나! ! 선수들이 현지 폭군이며, 즉시 10로 상승하기 때문에, 상사는 새로운 기술의 붕괴 일 파업 (노크)를 추가 할 프로그래머를 촉구했다.
나는 할머니, 아니 문제는, 그들이 참여하기 시작 생각했다.
다음은 프로세스의 수정입니다 :
첫 번째 단계 :
당연히, 우리는 새로운 수준의 기술을 붕괴 하루 파업을 정의 (노크)
공공 클래스 노크 { 공공 무효 말하기 () { // 축소 일 사운드 히트 (Console.WriteLine을 " 오, 그래! " ); } }
파트 II :
당연히, 우리는 검객 클래스를 수정하는
공공 클래스 검객 { // 두 기술에 해당하는 개인 , 최대까지 개인 킬 (kill)을 죽이고, 개인 노크 노크; // 해제 할 기술 선택 공공 무효 선택 ( 개체 기술을) { 경우 (스킬 입니다 위) { 최대 = (위) 기술 ; 킬 (kill) = 널 ; 노크 = 널 (null) ; } 다른 IF { 킬 (kill)가= (킬) 기술, 최대 = 널 ; konck = 널 (null) ; } 다른 { konck = (konck) 기술, 최대 = 널 ; 킬 (kill) = 널 (null) ; } } // 다른 기술이 다른 사운드 릴리스에 해당 해제 공공 무효 (히트 ) { Console.WriteLine는 ( " Daguai 시작! " ) IF (킬 == 널) { up.Speak (); } 다른 경우 { kill.Speak (); } 다른 { knock.Speck (); } } }
승인!
각이 경우 다른 추가 나쁘지 추가로 위에서 볼 수 있듯이, 새로운 기술을 추가하는 할머니는 검객 클래스는 선택의 능력을 견딜과 기술을 해제 할 수 있습니다, 새로운 필드 노크를 추가! !
코드가 구현 될 때 난 그냥 변경하지만, 999 일초 그 거물, 이번에는 보스가 나에게 100 개 유령 검객 기술을 추가 촉진 할 수 있습니다.
즉시 나는 파란색에서 볼트! !
이 때, 나는 비밀리에왔다 내 바나나 왕은 나에게 새로운 기술을 가르쳐 사랑 - 추상 클래스를! !
그래서, 추상적 여행의 새로운 아이디어로 시작 :
1 단계 : 기술
첫째, 추상 클래스 AbstractSkill을 정의합니다. 픽, 유령 잘라 내기, 붕괴 일간의 파업, 큰 흡입 모두에 할머니는 AbstractSkill 존재 사운드 기술의 방법이라는 클래스로 추상화하지만 릴리스는 소리가 무엇 무엇? 대답은 아무 소리도 없다.
공공 추상 클래스 AbstractSkill { 공공 추상적 무효 말하기 (); }
- 각각의 특정 기술이 추상 클래스 상속 (즉, 각 스킬 사운드 효과를 다시 추가 재정이 상속하는 방법 AbstractSkill에 다시 작성하는 것입니다)
공공 클래스 업 : AbstractSkill { 공공 재정의 무효 말하기 () { // 사운드 선택 (Console.WriteLine을 " 이봐! " ); } } 공용 클래스 킬을 : AbstractSkill를 { 공공 재정의 무효 말하기 () { // 유령 소리를 잘라 Console.WriteLine ( " 하! " ); } } 공용 클래스 노크 : AbstractSkill { 공개 재정의 무효 말하기 () { // 축소 일 사운드 히트 (Console.WriteLine을 " 오, 그래! " ); } }
파트 II : 정의의 유령 검객.
나는 (전 그냥 코드를하지 않는 것?) 유령 검객을 재정의이 시간 :
공공 클래스 검객 { 개인 AbstractSkill 기술; 공공 검객은 () {} 공공 무효은 (AbstractSkill 기술)을 선택 { 이 .skill = 기술을; } 공공 무효 히트 () { skill.Speak (); } }
파트 III : 유령 검객의 예와 세 가지 기술을 넣어.
클래스 프로그램 { 정적 무효 메인 ( 문자열 []에 args) { // 유령 검객 아사히 아사히 아기의 인스턴스 검객 xuxubaobao = 새로운 새로운 검객 ();
// 선택하고 밖으로 방출하여 아사히 아사히 아기의 선택을 xuxubaobao.Select을 ( 새로운 새로운 업 ()); xuxubaobao.Hit ();
// 아사히 아사히 아기 유령 잘라 사용하고 해제를 선택 xuxubaobao.Select을 ( 새로운 새로운 킬 ()); xuxubaobao.Hit ();
// 아사히 아사히 아기가 붕괴 및 릴리스 날이 삼진 사용하도록 선택할
xuxubaobao.Select를 (새 새 노크 ());
xuxubaobao.Hit ();
}
}
예를 들어 : 할머니가, 새로운 기술을 추가 한 후 직접 새 클래스 기술을 정의하고 추상 클래스 AbstractSkill을 상속하려면이 시간, 더 나은 코드를 변경하고있다 (작은 흡입 : 빨아)
공공 클래스 빨아 : AbstractSkill를 { 공공 재정의 무효 말하기 () { // 小吸音效 Console.WriteLine ( " 오, 오! 오 " ); } }
그래서, 추상 클래스 만 추상 클래스의 자회사에 클래스를 추가해야합니다, 그들은 아무 것도 변경되지 않습니다, 그것은 갑자기 저장 많은 노력 아의 모든! ! !