본문 바로가기

자바

8. 절차지향 프로그래밍과 함수 그리고 객체지향3

클래스에서 객체를 만들기 위해 생성자라는 것을 사용한다. 클래스에서 생성자를 만들지 않으면 자동으로 기본 생성자를 호출하여 생성한다. 생성자는 매개변수의 종류와 매개변수의 갯수를 이용하여 여러가지를 만들 수 있다. 

 

접근 지정자는 객체 지향에서 중요한 문법이다. 외부에서 클래스에 값을 변경하지 못하도록 제어하는 키워드를 이용하여 클래스에 캡슐화를 책임진다. 

 

이클립스에서는 private 멤버의 값을 사용하기 위해 getter와 setter함수를 자동으로 지원해준다. getter란 private멤버 값을 사용하기 위해 반환하는 함수이고 setter란 private멤버 값을 지정하기 위해 사용하는 함수이다. 자동으로 getter와 setter를 만드는 방법은 클래스 선언부에서 오른쪽 클릭을 하여 source를 눌러 getter와 setter를 만드는 메뉴를 누르면 된다. 

 

this키워드는 객체 자신을 가리키는 문법이다. 멤버변수 앞에 this를 붙임으로써 객체의 멤버를 사용하거나 초기화한다.

package Myclass;

public class Student {
	
	//접근 지정자 private을 이용, 클래스 외부에서 접근 불가, 인스턴스 변수
	private int age;
	private String name;
	private int number;
	
	
	//접근 지정자 public을 이용, 클래스 외부에서 접근 가능
	public Student() { //매개변수가 없는 생성자
		age = 0;
		name = "홍길동";
		number = 0;
	}
	
	public Student(int age, String name, int number) { //매개변수가 있는 생성자, this는 자기자신 인스턴스를 가리킨다.
		this.age = age;
		this.name = name;
		this.number = number;
	}
	
	//get함수는 private멤버 값을 반환하는 함수, set함수는 private멤버의 값을 초기화하는 함수
	public int getAge() {
		return this.age;
	}
	
	public void setAge(int age) {
		this.age = age; 
	}
	
	public int getNumber() {
		return this.number;
	}
	
	public void setNumber(int number) {
		this.number = number; 
	}
	
	public String getName() {
		return this.name;
	}
	
	public void setName(String name) {
		this.name = name; 
	}
	
	public void showyears() { //객체에서 함수를 만들 수 있다.
		System.out.println("대학 입학까지는 " + (20 - this.age) + "년 남았습니다.");
	}
}

 

 

package Myclass;

public class Main {
	public static void main(String[] args) {
		Student stu1 = new Student(); //매개변수가 없는 생성자 호출
		Student stu2 = new Student(15, "김민수", 12345678); //매개변수가 있는 생성자 호출
		Student stu3 = new Student();
		
		//setter를 이용하여 stu3을 초기화
		stu3.setAge(19);
		stu3.setName("김민지");
		stu3.setNumber(1345566);
		
		System.out.println(stu1.getAge());
		System.out.println(stu1.getName());
		System.out.println(stu1.getNumber());
		System.out.println();
		
		System.out.println(stu2.getAge());
		System.out.println(stu2.getName());
		System.out.println(stu2.getNumber());
		stu2.showyears();
		System.out.println();
		
		System.out.println(stu3.getAge());
		System.out.println(stu3.getName());
		System.out.println(stu3.getNumber());
		stu3.showyears();
	}
}