제1장 유형 과 방법 소개

클래스
    이해 류 의 가장 중요 한 것 은 새로운 데이터 형식 을 정의 하 는 것 이다.정의 되면 이 새로운 형식 으로 대상 을 만 들 수 있 습 니 다. 따라서 클래스 는 대상 의 템 플 릿 이 고 대상 은 클래스 의 인 스 턴 스 입 니 다. 대상 은 클래스 의 인 스 턴 스 이기 때 문 입 니 다.
    클래스 는 사용자 정의 추상 적 인 데이터 유형 으로 특정한 유형의 사물 의 통칭 으로 상상 할 수 있다. 예 를 들 어 소장, 샤 오리, 조 군 은 모두 학생 이다. 그러면 도대체 학생 은 무엇 일 까? 우 리 는 상상 할 수 있다. 학생 들 은 이름, 나이, 반, 학습 성적 을 가지 고 학교 에 가 야 하고 학교 가 파 하고 숙제 를 해 야 하 는 추상 적 인 사물 의 통칭 이다.
    대상 을 대상 으로 하 는 사상 은 현실 세계 에서 객관 적 인 사물 을 속성 과 행 위 를 가 진 대상 으로 묘사 하고 같은 대상 의 공동 속성 과 행 위 를 추상 화하 여 유형 을 형성한다.
    예 를 들 어 학생 들 은 이름, 성별, 나이, 국어 성적, 수학 성적, 영어 성적 등 특징 이 있 습 니 다. 그러면 우 리 는 절차 에서 이런 특징 을 어떻게 표시 합 니까? 장 군, 샤 오리, 조 군 이라는 세 학생 은 어떻게 표시 합 니까?
   //예시 1: (StudentDemo01. java):   
class Student
{
	String stdName; //    
	String stdSex; //    
	int stdAge; //    
	double chineseMark; //    
	double mathMark; //    
	double englishMark; //    
}

class StudentDemo01
{
	public static void main(String[] args)
	{
		//       
		//Student stdZhang = new Student();
		Student stdZhang;
		stdZhang = new Student();
		//       
		stdZhang.stdName = "  ";
		stdZhang.stdSex = " ";
		stdZhang.stdAge = 20;
		stdZhang.chineseMark = 98;
		stdZhang.mathMark = 99;
		stdZhang.englishMark = 100;
		System.out.println("    ");
		System.out.println("     :" + stdZhang.stdName);
		System.out.println("     :" + stdZhang.stdSex);
		System.out.println("     :" + stdZhang.stdAge);
		System.out.println("       :" + stdZhang.chineseMark);
		System.out.println("       :" + stdZhang.mathMark);
		System.out.println("       :" + stdZhang.englishMark);
		System.out.println();

		//       
		//Student stdLi = new Student();
		Student stdLi;
		stdLi = new Student();
		//       
		stdLi.stdName = "  ";
		stdLi.stdSex = " ";
		stdLi.stdAge = 18;
		stdLi.chineseMark = 88;
		stdLi.mathMark = 89;
		stdLi.englishMark = 90;
		System.out.println("    ");
		System.out.println("     :" + stdLi.stdName);
		System.out.println("     :" + stdLi.stdSex);
		System.out.println("     :" + stdLi.stdAge);
		System.out.println("       :" + stdLi.chineseMark);
		System.out.println("       :" + stdLi.mathMark);
		System.out.println("       :" + stdLi.englishMark);
		System.out.println();

		//       
		//Student stdZhao = new Student();
		Student stdZhao;
		stdZhao = new Student();
		//       
		stdZhao.stdName = "  ";
		stdZhao.stdSex = " ";
		stdZhao.stdAge = 22;
		stdZhao.chineseMark = 78;
		stdZhao.mathMark = 79;
		stdZhao.englishMark = 70;
		System.out.println("    ");
		System.out.println("     :" + stdZhao.stdName);
		System.out.println("     :" + stdZhao.stdSex);
		System.out.println("     :" + stdZhao.stdAge);
		System.out.println("       :" + stdZhao.chineseMark);
		System.out.println("       :" + stdZhao.mathMark);
		System.out.println("       :" + stdZhao.englishMark);
		System.out.println();

	}
}

    클 라 스 키 워드 를 사용 하려 는 성명 류 를 볼 수 있 습 니 다. 클 라 스 에서 정 의 된 데이터 나 변 수 를 구성원 변수 라 고 합 니 다.   
   내 가 여기에 두 개의 클 라 스 를 한 파일 에 쓴 것 을 볼 수 있다.
    하 나 는 Student 류 이 고 추상 적 인 데이터 모델 류 입 니 다.
    하 나 는 Student Demo 01 입 니 다. 프로그램 실행 클래스 입 니 다.
 
2: 생 성 대상
   1. 클래스 를 만 들 때 새로운 데이터 형식 을 만 들 었 습 니 다. 이 형식 으로 대상 을 설명 할 수 있 습 니 다. 실제로 클래스 를 가 져 오 는 대상 은 두 단계 로 나 뉘 는 과정 입 니 다.
   우선, 이 유형의 인용 을 설명해 야 합 니 다. 이 인용 은 대상 을 정의 하지 않 습 니 다. 대상 을 인용 할 수 있 는 인용 일 뿐 입 니 다.   그 다음 에 이 대상 에 게 실제 물리 적 메모 리 를 분배 해 야 합 니 다. 바로 new 키워드 로 메모 리 를 분배 한 다음 에 인용 과 분 배 된 메모 리 를 연결 하 는 것 입 니 다.
   2. 클래스 와 대상 간 의 차이: 클래스 는 새로운 데이터 형식 을 만 들 수 있 습 니 다. 이러한 새로운 데이터 형식 으로 대상 을 만 들 수 있 습 니 다. 즉, 구성원 간 의 관 계 를 정의 하 는 논리 적 프레임 워 크 를 만 들 수 있 습 니 다. 하나의 대상 을 설명 할 때 이러한 인 스 턴 스 를 만 들 고 있 습 니 다. 따라서 클래스 는 논리 적 구조 이 고 대상 은 물리 적 진실성 을 가지 고 있 습 니 다.(즉 대상 이 메모리 에 공간 을 차지 하 는 것).
   3.Student std1 = new Student();     Student std2 = std1;
 
     이때 std1 과 std2 는 같은 대상 을 null 로 가리 키 고 있 습 니 다.
      null 은 매우 특수 합 니 다. 만능 대상 입 니 다. 모든 대상 을 표시 할 수 있 습 니 다. 메모리 공간 이 존재 하지 않 습 니 다. null 은 인 스 턴 스 가 존재 하지 않 음 을 표시 합 니 다.
      String str 1 = null; str 1 은 null 입 니 다. 메모리 에 문자열 쌍 을 만 들 지 않 았 습 니 다.      String str 2 = "; str 2 에서 인용 한 문자열 쌍 이 존재 합 니 다. 이 문자열 의 값 은" "일 뿐 입 니 다. .
 
방법 소개
   1.type name(parameterList){       ...방법의 실현     }
     그 중에서 type 은 이 방법 이 되 돌아 오 는 데이터 형식 을 지정 합 니 다. 이것 은 만 든 클래스 의 형식 을 포함 하여 모든 유효한 형식 일 수 있 습 니 다. 이 방법 이 값 을 되 돌려 주지 않 으 면 되 돌아 오 는 형식 은 반드시 void 여야 합 니 다.
     방법 명 은 name 에서 지정 하여 스스로 정의 할 수 있 지만 의미 가 있어 야 하 며 a, b, c 등 무의미 한 이름 으로 정의 할 수 없습니다.
     parameterList 매개 변수 목록 은 쉼표 로 분 리 된 유형 과 식별 자 시퀀스 입 니 다. 매개 변 수 는 본질 적 으로 변수 이 고 방법 이 호출 될 때 필요 한 실제 매개 변수 에 대응 합 니 다. 방법 에 매개 변수 가 없 으 면 매개 변수 목록 이 비어 있 습 니 다.
     반환 형식 은 void 가 아 닌 방법 으로 다음 형식 return 문 구 를 사용 하여 호출 프로그램 에 값 을 되 돌려 줍 니 다.     return value;  그 중 value 는 되 돌아 오 는 값 입 니 다.
   2. 반환 값 이 없고 매개 변수 목록 이 없 는 방법
  //예시 2: StudentDemo 02. java  
class Student
{
	String stdName; //    
	String stdSex; //    
	int stdAge; //    
	double chineseMark; //    
	double mathMark; //    
	double englishMark; //    

	void introductionSelf()
	{
		System.out.println("    ");
		System.out.println("     :" + stdName);
		System.out.println("     :" + stdSex);
		System.out.println("     :" + stdAge);
		System.out.println("       :" + chineseMark);
		System.out.println("       :" + mathMark);
		System.out.println("       :" + englishMark);
		System.out.println();
	}
}

class StudentDemo02
{
	public static void main(String[] args)
	{
		//       
		//Student stdZhang = new Student();
		Student stdZhang;
		stdZhang = new Student();
		//       
		stdZhang.stdName = "  ";
		stdZhang.stdSex = " ";
		stdZhang.stdAge = 20;
		stdZhang.chineseMark = 98;
		stdZhang.mathMark = 99;
		stdZhang.englishMark = 100;
		stdZhang.introductionSelf();		

		//       
		//Student stdLi = new Student();
		Student stdLi;
		stdLi = new Student();
		//       
		stdLi.stdName = "  ";
		stdLi.stdSex = " ";
		stdLi.stdAge = 18;
		stdLi.chineseMark = 88;
		stdLi.mathMark = 89;
		stdLi.englishMark = 90;
		stdLi.introductionSelf();

		//       
		//Student stdZhao = new Student();
		Student stdZhao;
		stdZhao = new Student();
		//       
		stdZhao.stdName = "  ";
		stdZhao.stdSex = " ";
		stdZhao.stdAge = 22;
		stdZhao.chineseMark = 78;
		stdZhao.mathMark = 79;
		stdZhao.englishMark = 70;
		stdZhao.introductionSelf();
	}
}

   여기 void 는 반환 값 이 없습니다. introductionSelf () 는 방법 명 입 니 다. 괄호 안에 매개 변수 목록 이 없 으 면 이 방법 은 매개 변 수 를 전달 할 필요 가 없다 는 것 을 설명 합 니 다. 괄호 안의 내용 은 방법의 실현 부분 입 니 다. 그리고 프로그램 에서 호출 할 때 stdZhang. introduction Self () 를 통 해 이 방법 을 호출 할 수 있 습 니 다.
 
   3. 매개 변수 목록 이 있 고 값 을 되 돌려 주 는 방법 이 없 는 쓰기
  //예시 3: StudentDemo 03. java  
class Student
{
	String stdName; //    
	String stdSex; //    
	int stdAge; //    
	double chineseMark; //    
	double mathMark; //    
	double englishMark; //    

	//      
	void introductionSelf()
	{
		System.out.println("    ");
		System.out.println("     :" + stdName);
		System.out.println("     :" + stdSex);
		System.out.println("     :" + stdAge);
		System.out.println("       :" + chineseMark);
		System.out.println("       :" + mathMark);
		System.out.println("       :" + englishMark);
		System.out.println();
	}

	//  this      
	void initSelf(String _stdName,String _stdSex,int _stdAge, double _chineseMark,double _mathMark,double _englishMark)
	{		
		stdName = _stdName;
		stdSex = _stdSex;
		stdAge = _stdAge;
		chineseMark = _chineseMark;
		mathMark = _mathMark;
		englishMark = _englishMark;
		
	}
}

class StudentDemo03
{
	public static void main(String[] args)
	{
		//       
		//Student stdZhang = new Student();
		Student stdZhang;
		stdZhang = new Student();
		stdZhang.initSelf("  "," ",28, 98D,95D,97D);
		stdZhang.introductionSelf();
		

		//       
		//Student stdLi = new Student();
		Student stdLi;
		stdLi = new Student();
		//       
		stdLi.initSelf("  "," ",28, 88D,85D,87D);
		stdLi.introductionSelf();

		//       
		//Student stdZhao = new Student();
		Student stdZhao;
		stdZhao = new Student();
		//       
		stdZhao.initSelf("  "," ",22, 78D,75D,77D);
		stdZhao.introductionSelf();

	}
}

   
    4. 반환 값 이 있 고 매개 변수 목록 이 없 는 방법 으로 작성 합 니 다.
  //예시 4: StudentDemo 04. java  
class Student
{
	String stdName; //    
	String stdSex; //    
	int stdAge; //    
	double chineseMark; //    
	double mathMark; //    
	double englishMark; //    

	//    
	void introductionSelf()
	{
		System.out.println("    ");
		System.out.println("     :" + stdName);
		System.out.println("     :" + stdSex);
		System.out.println("     :" + stdAge);
		System.out.println("       :" + chineseMark);
		System.out.println("       :" + mathMark);
		System.out.println("       :" + englishMark);
		
	}

	//   
	void initSelf(String stdName,String stdSex,int stdAge, double chineseMark,double mathMark,double englishMark)
	{		
		this.stdName = stdName;
		this.stdSex = stdSex;
		this.stdAge = stdAge;
		this.chineseMark = chineseMark;
		this.mathMark = mathMark;
		this.englishMark = englishMark;
		
	}

	//         
	double markAvg()
	{
		double mark = 0D;
		mark = (chineseMark + mathMark + englishMark)/3;
		return mark;
	}
}

class StudentDemo04
{
	public static void main(String[] args)
	{
		double mark = 0; //    ,     
		//       
		//Student stdZhang = new Student();
		Student stdZhang;
		stdZhang = new Student();
		stdZhang.initSelf("  "," ",28, 98D,98D,98D);
		stdZhang.introductionSelf();
		mark = stdZhang.markAvg();
		System.out.println("        :" + mark);
		//System.out.println("        :" + stdZhang.markAvg());
		System.out.println();

		//       
		//Student stdLi = new Student();
		Student stdLi;
		stdLi = new Student();
		//       
		stdLi.initSelf("  "," ",28, 88D,88D,88D);
		stdLi.introductionSelf();
		System.out.println("        :" + stdLi.markAvg());
		System.out.println();

		//       
		//Student stdZhao = new Student();
		Student stdZhao;
		stdZhao = new Student();
		//       
		stdZhao.initSelf("  "," ",22, 78D,78D,78D);
		stdZhao.introductionSelf();
		System.out.println("        :" + stdZhao.markAvg());
		
	}
}

 
    5. 반환 값 이 있 고 매개 변수 목록 이 있 는 방법 을 쓰 는 방법
  //예시 5: StudentDemo 05. java  
class Student
{
	String stdName; //    
	String stdSex; //    
	int stdAge; //    
	double chineseMark; //    
	double mathMark; //    
	double englishMark; //    

	//    
	void introductionSelf()
	{
		System.out.println("    ");
		System.out.println("     :" + stdName);
		System.out.println("     :" + stdSex);
		System.out.println("     :" + stdAge);
		System.out.println("       :" + chineseMark);
		System.out.println("       :" + mathMark);
		System.out.println("       :" + englishMark);
		
	}

	//   
	void initSelf(String stdName,String stdSex,int stdAge, double chineseMark,double mathMark,double englishMark)
	{		
		this.stdName = stdName;
		this.stdSex = stdSex;
		this.stdAge = stdAge;
		this.chineseMark = chineseMark;
		this.mathMark = mathMark;
		this.englishMark = englishMark;
		
	}

	//         
	double markAvg()
	{
		double mark = 0D;
		mark = (chineseMark + mathMark + englishMark)/3;
		return mark;
		//return (chineseMark + mathMark + englishMark)/3;
	}

	//         ,
	boolean markEquals(Student std)
	{
		return this.markAvg() > std.markAvg();
	}
}

class StudentDemo04
{
	public static void main(String[] args)
	{		
		//       
		//Student stdZhang = new Student();
		Student stdZhang;
		stdZhang = new Student();
		stdZhang.initSelf("  "," ",28, 98D,98D,98D);
		stdZhang.introductionSelf();
		double mark = stdZhang.markAvg();//         
		System.out.println("        :" + mark);
		//System.out.println("        :" + stdZhang.markAvg());		
		System.out.println();

		//       
		//Student stdLi = new Student();
		Student stdLi;
		stdLi = new Student();
		//       
		stdLi.initSelf("  "," ",28, 88D,88D,88D);
		stdLi.introductionSelf();
		System.out.println("        :" + stdLi.markAvg());
		System.out.println();

		//       
		//Student stdZhao = new Student();
		Student stdZhao;
		stdZhao = new Student();
		//       
		stdZhao.initSelf("  "," ",22, 78D,78D,78D);
		stdZhao.introductionSelf();
		System.out.println("        :" + stdZhao.markAvg());	
		
		
	}
}

 
4. static 의 역할
   한 구성원 이 static 로 밝 혀 지면 클래스 의 모든 대상 이 만 들 기 전에 접근 할 수 있 습 니 다. 대상 을 참조 하지 않 아 도 됩 니 다. 방법 과 변 수 를 static 로 설명 할 수 있 습 니 다. static 구성원 의 가장 흔 한 예 는 main () 입 니 다. 프로그램 이 실 행 될 때 main () 을 호출 해 야 하기 때문에 static 로 밝 혀 집 니 다.
 
 

좋은 웹페이지 즐겨찾기