JAVA

JAVA 코드를 통해 생성자 이해하기

yn98 2024. 6. 22. 22:08
class Student { //학생 이라는 객체.

	String name;
	int score;
	char grade; 	// 이름, 점수, 등급

	/*생성자 입맛대로 만들어보기
	Student(외부에서 어떤 값을 가져올지) {
		멤버변수 = 외부에서 받아온 값으로 초기화;
	}
	*/
	// ↑ 멤버변수 초기화

	// 생성자 주요특징★★개발자가 생성자 코드를 작성하면, 더 이상 기본 생성자는 제공하지 않는다.

	Student(String name, int score, char grade){

		this.name = name;
		this.score = score;
		this.grade = grade;

		//★this란 자기자신 객체를 의미한다.
		/* this.name = name;
		내.이름 = 외부에서 받아온 name값;
		*/

	}

	void study() {
		this.score += 50;
		System.out.println("분발하세요");

		if(this.score>100) { //score가 100보다 크면 100으로 저장.
			this.score=100;
		}
	}

	void printInfo() {
		System.out.println("저는 " + this.name + "입니다. ");
		System.out.println(this.score+ "점이고 " + this.grade+ "등급입니다. ");
	}
}

public class ConstEx {
	public static void main(String[] args) {

		int num =30; //선언, 정의 >> 데이터를 저장
	
		// 변수 3요소
		// : 메모리의 주소, 그 주소에 대한 이름, 메모리의 크기
		// != 데이터 값 xxxx
		// (변수공간은 옷장.. 옷 없어도 구매가능)

		

		//Student stu = new Student();//메모리에 Student 만큼의 공간을 선언할거야 = new 연산자.. ////JAVA가 당연히 필요한거니까 기본제공해줌 ! == 생성자
		// 객체를 만들 수 있는 유일한 방법
		// == 객체화(인스턴스화)
		// 클래스 객체 = new 생성자()
		// 변수타입 변수명 = 메모리 공간

		

		//stu.name = "예나";
		//stu.score = 50;
		//stu.grade = 'C';
        
        
        
		//int data;
		//System.out.println(data); // 왜 에러가 날까 ?

		// 데이터 값을 변수 3요소(필수)가 아니기 때문에
		// 선언할 때에 필요는 없지만
		// 출력할수는 없다.

		

		Student data = new Student("예나", 50, 'C');

		// 기본(디폴트) 생성자는 기본제공되다가,
		// 사용자가 생성자를 새로 정의하면 더 이상 기본제공 xxxx

		System.out.println(data.name);	

		// 생성자는 객체를 생성하는 역할
		// 1. 객체화를 담당
		// 2. "멤버변수 초기화" ★

	}
}