자바 기초 (클래스- setter, getter)

웅평·2023년 11월 26일

setter, getter

  • Getter는 값을 가져오는 메소드
  • Setter는 값을 설정하는 메소드
class Point{   //Point라는 이름을 가진 새로운 자료형(클래스)을 정의
	int x;	   //Point라는 새로운 클래스의 속성으로 x를 정의
	int y;		//Point라는 새로운 클래스의 속서으로 y를 정의
	
	//Point  클래스의 y의 값을 변경하기 위한 기능을 정의
	public void setY(int yCoord){ // 매개변수로 어떤값으로 변경할지 전달받는다.
		y = yCoord; //전달받은 매개변수를 속성(맴버변수) y에 저장
		return ;//메소드의 내용이 끝나면 자신을 호출한 곳으로 돌아간다. 반환값이 없다.
	}
	
	//Point 클래스의 y의 값을 읽어오기(갖고오기) 위한 기능 정의
	public int getY(){
		return y; // 속성 y값을 돌려 준다.
	}
	
	public int getX(){
		return x;
	}
	void setX(int xCoord){
		x= xCoord;
		return;
	}
}


public class PointTest {
	public static void main(String[] args) {
		//Point p1;
		//p1 = new Point();
		
		Point p1 = new Point();
		p1.setX(100);
		p1.setY(200);
		
		Point p2 = new Point();
		p2.setX(100);
		p2.setY(300);
		
		System.out.println(p1.getX());
		System.out.println(p1.getY());
		System.out.println("----------------------");
		System.out.println(p2.getX());
		System.out.println(p2.getY());
		
	}
}

메소드의 매개변수이름을 의미 있는 이름으로 정해 주다 보면 속성(맴버변수)이름과 겹치게 된다.
메소드 안에서는 매개변수이름이 우선순위가 높아서 매개변수의 값을 다시 매개변수에 넣어라 라는 의미가 되고 속성의 값이 초기화 되지 않는다.

this, this()

this

  • 메소드의 매개변수이름을 의미 있는 이름으로 정해 주다 보면 클래스의 속성(맴버변수) 이름과 겹치게 되는데 이때 클래스의 맴버 자신을 구별할 목적으로 this를 사용
class Book{
	private String title;
	private String author;	
	public String getAuthor() {
		return this.author;
	}	
	public String getTitle(){
		return this.title;
	}	
	
	public void setTitle(String title){
		this.title = title;
		return;
	}	
	public void setAuthor(String author) {
		this.author = author;
		return;
	}
}


public class BookTest {
	public static void main(String[] args) {
		Book b1;
		b1= new Book();
		b1.setTitle("Greate Java");
		b1.setAuthor("bob");
		System.out.println(b1.getTitle());
		System.out.println(b1.getAuthor());
	}
}

Book 클래스에 getter, setter 메소드를 보면 this가 있는데 이 this는 클래스의 멤버함수를 가르킨다

this()

  • 생성자가 중복 정의 되어 있을때에 생성자 body안에서 다른 생성자를 요구할 때 사용하는 키워드아다
  • 이 문장은 반드시 생성자의 첫번째 문장에 와야 한다.
class Dog{
	private String name;
	public String breed;
	private int age;

	public Dog(String name, String breed, int age) {		
		this.name = name;
		this.breed = breed;
		this.age = age;
	}
	public Dog(String name, int age) {
		this(name,"진돗개",age);
	}
	public Dog() {
		this("순심",5);
		System.out.println("기본 생성자 동작함!");
	}
	
}

생성자, 생성자 중복

생성자

  • 클래스 이름과 같은 이름의 특수한 메소드를 말하며 객체 생성시에 자동수행되어 속성(들)의 값을 초기화 할 목적으로 사용
  • 생성자는 일반메소드 처럼 호출문에 의해서 동작하는 것이 아니기 때문에 return의 개념이 없다
  • 따라서 생성자에는 리턴 자료형을 쓰지 않고 리턴 값이 없다는 의미는 void 조차 쓰면 않된다

생성자 중복(constructor overloading)

  • 메소드 중복이 가능하듯이 생성자도 중복 정의 할 수 있다.
  • 이것을 위해서는 메소드 중복과 마찬가지로 매개변수의 개수가 다르거나 자료형이 달라야 한다.

메소드 오버로딩(method overloading)

  • 같은 이름의 메소드를 중복하여 정의하는 것을 말한다.
  • 이것을 위해서는 매개변수의 개수가 다르거나 자료형이 달라야 한다.
class Employee{
	private String name;
	private String phone;
	private int salary;
	
	public Employee(String name, String phone, int salary) {
		this.name = name;
		this.phone = phone;
		this.salary = salary;
	}
	
	public Employee() {
		name = "없음";
		phone = "없음";
		salary = 0;
	}
}

기본 생성자

  • 매개변수를 갖지 않는 생성자를 말하며 사용자가 생성자를 한개도 만들지 않으면 "기본 생성자"가 제공된다.
class Person{
	private String name;
	private int age;
	public String getName() {
		return name;
	}
	public int getAge() {
		return age;
	}
	
}

public class PersonTest {
	public static void main(String[] args) {
		Person p1 = new Person();
		
		System.out.println(p1.getName());
		System.out.println(p1.getAge());
	}
}

사용자가 생성자를 한개도 만들지 않으면 기본생성자가 제공되기 때문에 위와 같이 객체를 생성 할 수 있다

그러나, 사용자가 생성자를 한개라도 만들기 시작하면 더이상 "기본생성자"를 제공하지 않는다.

국비학원에서 배운것과 따로 공부한 것을 정리한 것입니다

참고
나도코딩 유튜브

0개의 댓글