목록Java (47)
각진 세상에 둥근 춤을 추자
객체 지향 프로그램에서 인스턴스를 단 하나만 생성하는 디자인 패턴을 싱글톤 패턴 (Singleton pattern)이라고 한다. 싱글톤 패턴은 static을 응용하여 프로그램 전반에서 사용하는 인스턴스를 하나만 구현하는 방식이다. 싱글톤 패턴으로 회사 클래스를 구현해 본다. 1. 생성자를 private로 만들기 접근 제어자를 private로 지정한다. package ch06_5; public class Company { private Company() {} } 2단계: 클래스 내부에 static으로 유일한 인스턴스 생성하기 1단계를 통해 외부에서 인스턴스를 생성할 수 없도록 하였다. 프로그램에서 사용할 유일한 인스턴스를 생성한다. 또한 private로 선언하여 외부에서 인스턴스에 접근하지 못하도록 제한한..
변수는 크게 3가지로 나눌 수 있다. 1. 지역 변수 (로컬 변수, local variable): 함수나 메서드 안에서만 사용할 수 있다. 2. 멤버 변수 (인스턴스 변수, instance variable): 클래스 안에서 사용한다. 3. static 변수 (클래스 변수, class variable): 여러 인스턴스에서 공통으로 사용할 수 있다. 이러한 변수는 어디에, 어떻게 선언되느냐에 따라 유효 범위 (scope)가 달라진다. 1. 지역 변수의 유효 범위 지역 변수는 함수나 메서드 내부에 선언하기 때문에 함수 밖에서는 사용할 수 없다. 즉, 하나의 함수에 선언한 지역 변수는 다른 함수에서 사용할 수 없다. 지역 변수가 생성되는 메모리를 스택 (stack)이라고 하는데, 스택에 생성되는 지역 변수는 함..
static 변수란 정적 변수를 말한다. static 변수는 클래스 내부에 선언하지만, 다른 멤버 변수처럼 인스턴스가 생성될 때마다 새로 생성하지 않는다. static 변수는 프로그램이 실행되어 메모리에 올라갔을 때 딱 한 번 메모리 공간이 할당되며, 그 값은 모든 인스턴스가 공유한다. 학생이 새로 생성되면 학번을 차례로 부여하는 프로그램을 생성해 본다. 여기서 static 변수의 이름은 serialNum이다. serialNum은 학생이 생성될 때마다 순서대로 증가한다. 이 증가한 값을 각 학생의 학번에 대입해 학생에게 새로운 학번을 부여한다. 1. 학생 클래스 생성하기 package ch06_3; public class Student { // static 변수는 인스턴스 생성과 상관 없이 먼저 생성된다..
객체 지향 프로그램은 객체를 정의하고 객체 간 협력으로 만들어 진다. 학생이 버스나 지하철을 타고 학교에 가는 것을 객체 지향으로 프로그래밍 해 본다. 1. 학생 클래스 구현하기 멤버 변수(속성): '이름', '학년', '가진 돈' 멤버 함수(메서드): '버스를 탄다', '지하철을 탄다', '학생의 현재 정보를 보여 준다' package ch06_2; // P175 - 학생 클래스 생성하기 public class Student { public String studentName;//학생 이름 public int grade;//학년 public int money;//학생이 가지고 있는 돈 // 학생 이름과 가진 돈을 매개변수로 받는 생성자 public Student(String studentName, int..
this를 사용하여 생성된 클래스 자신의 주소 값을 반환할 수 있다. 인스턴스 주소 값을 반환할 때는 this를 사용하고 반환형은 클래스 자료형을 사용한다. package ch06; public class P173 { String name; int age; P173 (){ this("이름없음", 1); } P173 (String name, int age){ this.name = name; this.age = age; } P173 retrunItSelf() { return this; // this형 변환 } public static void main(String[] args) { P173 noName = new P173(); System.out.println(noName.name); System.out.p..
클래스에 생성자가 여러 개 있을 때 어떤 생성자에서 다른 생성자를 호출하는 경우가 있다. 이때 this를 사용해 클래스의 생성자에서 다른 생성자를 호출할 수 있다. package ch06; //this로 다른 생성자 호출하기 public class P172 { String name; int age; P172() { this("이름없음", 1); } P172(String name, int age){ this.name = name; this.age = age; } } package ch06; public class P172_2 { public static void main(String[] args) { P172 noName = new P172(); System.out.println(noName.name); ..
자신의 메모리를 가리키는 this this는 생성된 인스턴스 스스로를 가리키는 예약어이다. 생년월일을 의미하는 BitrhDay 클래스를 만들고, this를 출력하는 메서드를 추가한다. package ch06; public class P170 { int day, month, year; public void setYear(int year) { this.year = year; } public void show() { System.out.println(this); } public static void main(String[] args) { P170 bDay = new P170(); bDay.setYear(2000); System.out.println(bDay); bDay.show(); } }