본문 바로가기

2024_풀스택학원/Back-end

[Java] 생성자 & 게터 세터(Constructor & Getter Setter)

생성자

생성이 될 때 호출 되는 자

생성 =  클래스가 생성될때

 

클래스 만들기

User 라는 이름의 class를 만들어준다

 

디폴트 생성자- 기본생성자는 숨겨져 있다.

하지만 생성자를 만드는 순간 디폴트생성자는 지워진다

지우진 생성자는 직접 써주어야한다.

 

여기서 생성자 이름은 클래스 이름과 일치해야 된다.

 

생성자 : 접근제한자 + 클래스명() {}

누군가에 의해 new로 생성될 때 가장 먼저 실행하게 됨

 

 

 

생성자의 구성

user 클래스의 정보(변수) 생성

클래스가 생성이 되었을 때  변수들 초기화시키기(생성한 정보들이 들어갈 공간이 있어야함)

// 붕어빵 틀이라고 생각하기
public class User {
	String name;
	int age;
	String hobby;
	
	// 클래스의 생성자
	public User (String _name, int _age, String _hobby) {
    	// 다른 곳에서 user라는 클래스가 어디선가 생성이 될 때 입력받을 수 있는 매개변수 만들기
        
		name = _name; // 어디선가 입력받아온 값을 User 클래스의 변수들에 저장
		age = _age;
		hobby = _hobby;
		
	}
// 밑에 main함수는 지금은 필요 없어서 생략.
//	public static void main(String[] args) {
//		
//	}
}

 

생성자를 굳이 치지않아도 쉽게 만드는 법

Source 탭 클릭

 

생성자에 어떤 파라미터를 넣어서 만들래?  선택한 후 Generate 클릭

 

결과 > 쉽게 생성자를 만들수 있음

// 붕어빵 틀
public class User { 
	String name;
	int age;
	String hobby;
	
	// 클래스의 생성자
	public User(String name, int age, String hobby) {
		super();
		this.name = name;//여기서 this는 자신의 클래스의 변수들을 가르킴(매개변수들과 구분지어줄 때 사용)
		this.age = age;
		this.hobby = hobby;
	}
}

 

 

 

Exam01파일 생성 - 클래스 생성 >  User클래스를 생성

new User();

public class Exam01 {
	public static void main(String[] args) {
		// 생성자 파라미터(매개변수)에 맞게 인자를 삽입해준다.
		
		// 붕어빵 틀을 이용해서 활용
		User user = new User("백민주",27,"오버워치");// User클래스 생성, 실제 값들 넣어주기
		User user2 = new User("백민주",27,"오버워치");// User클래스 생성, 실제 값들 넣어주기
		User user3 = new User("백민주",27,"오버워치");// User클래스 생성, 실제 값들 넣어주기
		User user4 = new User("백민주",27,"오버워치");// User클래스 생성, 실제 값들 넣어주기
		
		
	}
}

 

 

name, age, hobby 출력하기

 

 

게터 &세터

값을 따로 넣어주고싶을때 사용

 

User 클래스를 생성 , 빈 값으로 생성!

public class Exam01 {
	public static void main(String[] args) {	
		// User 클래스를 빈 값으로 생성
		User user = new User();
	}
}

 

User class 생성자 

// 붕어빵 틀
public class User { 
	String name;
	int age;
	String hobby;
	// 디폴트 생성자
	public User() {}
}

 

 

게터 세터 쉽게 만들기

Source 탭 클릭

 

 

 

 

선언되어있는 변수들 중에 getter setter 만들고싶은 변수들 선택

 

 

getter setter 만들어진거 확인

// 붕어빵 틀
public class User { 
	String name;
	int age;
	String hobby;
	
	// 디폴트 생성자
	public User() {}
	
	// 게터 세터 영역
	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}

	public String getHobby() {
		return hobby;
	}

	public void setHobby(String hobby) {
		this.hobby = hobby;
	}
}

 

 

게터,세터 이용해서 값 출력하기


public class Exam01 {
	public static void main(String[] args) {	
		// User 클래스를 빈 값으로 생성
		User user = new User();
		
		user.setName("홍길동");
		// User클래스에 setName으로 이동
		// 홍길동을 this.name에 저장
		
		System.out.println(user.name);
		// 출력하면 위에서 저장한 홍길동 출력
		System.out.println(user.getName());
		// getName()으로 출력하는 방법도 있음


		
	}
}

 

 

 

생성자 정리

생성자(Constructor) : 메서드의 한 종류로 몇가지 특이한 규칙을 가짐

1. 생성자 메서드의 이름은 클래스 이름과 같아야 함.

2. 메서드 호출 시점을 자유롭게 할 수 없다.( 불려지는 시점이 정해져 있음)

3. 생성자 메서드는 반환값을 가지지 않는다.(return 값이 없음)

4. 기타 모든 규칙은 일반 메서드와 동일하다( 매개변수, 접근제한자)

 

Main.java

package exams;

 

import classes.Computer;

 

public class minjoocoding {

public static void main(String[] args) {

// 객체 지향 문법 사용 Steps

// 1. 만들고자 하는 대상의 선택

// 순서대로 생각-> 절차지향적 사고, 필요한 객체가 무엇일까-> 객체 지향적 사고

 

// 2. 대상에 대한 분석(추상화)

// 속성: 대상을 구성하는 정보들

// 기능 : 대상이 수행할 수 있는 능력

 

// 3. 설계도 작성

// > 설계도 = Class

// 속성과 동작만을 추려내어 설계하는 문법을 class

// 메모리에 형성된 상태는 아니며 단순히 정의된 자료형이다.

 

// Class Monitor{ }

 

 

// 4. 대상의 인스턴스

// 가변적이고 큰 자료들은 heap 을 써야함

 

// Monitor lg;

// 자료형 (Monitor) 변수(lg) = 자료형 변수

// 근데 지금 여기선 new를 사용하지 않아 stack 에만 저장되어있다.

// 지금 이 상태는 모니터의 주소를 저장하기 위한 참조변수를 만든 것이다.

// stack 메모리에 lg라는 무언가가 만들어짐

 

// new Monitor();

// heap 메모리에 생성

// Monitor라는 설계도(Class)를 따라 무언가를 만들어주세요

 

// 객체화 : 힙 메모리상에 객체 생성해주는 명령어 new

// new를 통해 만들어진 heap 메모리상의 인스턴스

// 메모리에 실제 형성되었으며 형성된 공간을 .(참조연산자)를 통해 접근하여 사용 가능

 

 Monitor lg = new Monitor();

// monitor instance의 주소를 알고 있는 건 lg

// instance는 heap 메모리에서만 만들 수 있다. 가변적이고 크키가 크기 때문

 

 

// lg.

// 변수 뒤 .은 참조 연산자.

// 점 앞의 대상의 주소를 찾아가는것이 참조 연산자

// 우리가 설계한 대로 만들어 놓은, 자기가 제공할 수 있는 값을 보여준다.

// *설계도를 바탕으로 만들어놨고 설계도를 바탕으로 실체화된 것을 instance라고 한다.

// *heap이라는 메모리에 있는 게 instance,객체라고 한다.

 

Computer mycom = new Computer("yellow",100000,2);

//여기서 자료형 Computer는 클래스 이름과 같아야하는가?

System.out.println(mycom.color);

System.out.println(mycom.price);

System.out.println(mycom.weight);

// 클래스의 필드명이 private으로 되어있으면 접근이 불가능하다.->getter,setter 메서드이용

 

// getter와 setter 사용 예시

// Computer mycom = new Computer();

// mycom.setColor("black");

// System.out.println(mycom.getColor());

 

 

}

}

heap 메모리에 객체 생성

 

Monitor.java

package classes;

 

public class Monitor {

// 모니터를 구성하는 속성과 기능

// 속성은 변수로

// 기능은 메서드로 구현한다.

private int price;

private double weight;

private String color;

 

//이게 생성자

public Monitor(String color, int price, double weight) {

this.color=color;

this.price =price;

this.weight=weight;

 

}

 

public int getPrice() {

return price;

}

public void setPrice(int price) {

this.price = price;

}

public double getWeight() {

return weight;

}

public void setWeight(double weight) {

this.weight = weight;

}

public String getColor() {

return color;

}

public void setColor(String color) {

this.color = color;

}

 

 

}

 

Default Value 문법

 

 

배열 인스턴스

'2024_풀스택학원 > Back-end' 카테고리의 다른 글

[Java] ArrayList  (0) 2024.04.09
[Java] 상속  (0) 2024.04.08
[Java] Method  (0) 2024.04.02
[Java] 제어문  (0) 2024.03.28
[JAVA] 변수와 자료형  (1) 2024.03.26