본문 바로가기

객체 지향 프로그래밍 - 클래스

(12)
싱글톤 패턴 싱글톤 패턴 생성자를 private 접근 제한해서 외부에서 new 연산자로 생성자를 호출할 수 없도록 막아서 외부에서 마음대로 객체를 생성하지 못하게 함 대신 싱글톤 패턴이 제공하는 정적 메소드를 통해 간접적으로 객체를 얻을 수 있음 출처, 이것이 자바다 package ch06.sec15; /* * 클래스 디자인 패턴중 싱글톤 패턴 예제 * * 클래스로 하나의 객체만 생성하여 사용하는 특징. */ public class Singleton { private static Singleton singleton = new Singleton(); private Singleton() { } public static Singleton getInstance() { return singleton; } } package c..
Getter와 Setter Setter 데이터를 검증해서 유효한 값만 필드에 저장하는 메소드 Getter 필드값이 객체 외부에서 사용하기에 부적절한 경우, 적절한 값으로 변환해서 리턴할 수 있는 메소드 출처, 이것이 자바다 package ch06.sec14; public class Car { //필드선언. private, 생략 - default, public //개발시에는 보통 private 사용 private int speed; private boolean stop; //speed필드를 참조하기위한 메소드 선언 //외부에서 제공하는 speed값이 음수이면, 0 //0보다 크거나 같으면 그대로 적용 //setter 메소드 public void setSpeed(int speed) { if(speed < 0) { this.speed ..
접근 제한자 접근 제한자 중요한 필드와 메소드가 외부로 노출되지 않도록 해 객체의 무결성을 유지하기 위해서 접근 제한자 사용 출처, 이것이 자바다 접근 제한자는 public, protected, private의 세 가지 종류 출처, 이것이 자바다 출처, 이것이 자바다 클래스의 접근 제한 클래스를 선언할 때 public 접근 제한자를 생략하면 클래스는 다른 패키지에서 사용할 수 없음 출처, 이것이 자바다 클래스를 선언할 때 public 접근 제한자를 붙이면 클래스는 같은 패키지뿐만 아니라 다른 패키지에서도 사용할 수 있음 출처, 이것이 자바다 package ch06.sec13.exam01.package1; //동일한 패키지안에서는 public 키워드를 사용하지 않아도 참조가 가능하다. class A { } packag..
패키지 자바의 패키지 클래스의 일부분이며, 클래스를 식별하는 용도 패키지는 주로 개발 회사의 도메인 이름의 역순으로 만듦 출처, 이것이 자바다 상위 패키지와 하위 패키지를 도트(.)로 구분 패키지에 속한 바이트코드 파일(~.class )은 따로 떼어내어 다른 디렉토리로 이동할 수 없음 출처, 이것이 자바다 패키지 선언 패키지 선언은 package 키워드와 함께 패키지 이름을 기술한 것. 항상 소스 파일 최상단에 위치 출처, 이것이 자바다 패키지 이름은 모두 소문자로 작성. 패키지 이름이 서로 중복되지 않도록 회사 도메인 이름의 역순으로 작성하고, 마지막에는 프로젝트 이름을 붙여줌 출처, 이것이 자바다 import 문 다른 패키지에 있는 클래스를 사용하려면 import 문을 이용해서 어떤 패키지의 클래스를 사용하..
final 필드와 상수 final 필드 선언 final 필드는 초기값이 저장되면 최종적인 값이 되어서 프로그램 실행 도중에 수정할 수 없게 됨 final 필드에 초기값을 주려면 필드 선언 시에 초기값을 대입하거나 생성자에서 초기값을 대입 출처, 이것이 자바다 package ch06.sec11.exam01; /* * final 키워드를 적용하면, 초기값 이후 다른값으로 변경불가. */ public class Korean { final String nation = "대한민국"; final String ssn; String name; //ssn은 생성자를 통하여 초기값 사용. public Korean(String ssn, String name) { this.ssn = ssn; this.name = name; } } package c..
정적 멤버 정적 멤버 선언 정적 멤버: 메소드 영역의 클래스에 고정적으로 위치하는 멤버 출처, 이것이 자바다 static 키워드를 추가해 정적 필드와 정적 메소드로 선언 출처, 이것이 자바다 정적 멤버 사용 클래스가 메모리로 로딩되면 정적 멤버를 바로 사용할 수 있음 클래스 이름과 함께 도트(.) 연산자로 접근 출처, 이것이 자바다 출처, 이것이 자바다 정적 필드와 정적 메소드는 객체 참조 변수로도 접근(오해의 소지가 있어서 권장안함) package ch06.sec10.exam01; /* 정적(static)멤버 : 필드와 메소드 */ public class Calculator { //정적필드 static double pi = 3.14159; //정적메소드 static int plus(int x, int y) { r..
인스턴스 멤버 인스턴스 멤버 선언 및 사용 인스턴스 멤버: 필드와 메소드 등 객체에 소속된 멤버 출처, 이것이 자바다 this 키워드 객체 내부에서는 인스턴스 멤버에 접근하기 위해 this를 사용. 객체는 자신을 ‘this’라고 지칭 생성자와 메소드의 매개변수명이 인스턴스 멤버인 필드명과 동일한 경우, 인스턴스 필드임을 강조하고자 할 때 this를 주로 사용 package ch06.sec09; /* * 필드 : 인스턴스 필드와 정적(static) 필드 * this 키워드 : 객체생성시 구성요소를 this.필드, this.메소드로도 접근을 쉽게 가능하도록 지원 new 연산에 의하여 힙영역에 생성되는 객체 자신을 가리키는 의미 * 생성자 : 클래스에 생성자 선언이 없으면, 기본생성자는 컴파일과정에서 자동으로 생성된다. 반..
메소드 선언과 호출 메소드 선언 객체의 동작을 실행 블록으로 정의하는 것. 출처, 이것이 자바다 리턴 타입: 메소드 실행 후 호출한 곳으로 전달하는 결과값의 타입 메소드명: 메소드명은 첫 문자를 소문자로 시작하고, 캐멀 스타일로 작성 매개변수: 메소드를 호출할 때 전달한 매개값을 받기 위해 사용 실행 블록: 메소드 호출 시 실행되는 부분 메소드 호출 메소드 블록을 실제로 실행하는 것 클래스로부터 객체가 생성된 후에 메소드는 생성자와 다른 메소드 내부에서 호출될 수 있고, 객체 외부에서도 호출될 수 있음 외부 객체에서는 참조 변수와 도트(.) 연산자로 호출 출처, 이것이 자바다 package ch06.sec08.exam01; public class Calculator { //필드선언 //메소드 선언 //1)리턴값이 없는 메소..