목록이것이 자바다/06 클래스 (17)
충분히 쌓여가는
애플리케이션 전체에서 단 한개의 객체만 생성해서 사용하고 싶다면 싱글톤 Singleton 패턴을 적용할 수 있다 싱글톤 패턴의 핵심 생성자를 private 접근 제한해서 외부에서 new 연산자로 생성자를 호출할 수 없도록 막는 것 private 클래스() {} 생성자를 호출할 수 없으니 외부에서 마음대로 객체를 생성하는 것이 불가능해진다 대신 싱글톤 패턴일 제공하는 정적 메소드를 통해 간접적으로 객체를 얻을 수 있다 public class 클래스 { //private 접근 권한을 갖는 정적 필드 선언과 초기화 private static 클래스 singleton = new 클래스(); //1 //private 접근 권한을 갖는 생성자 선언 private 클래스() {} //public 접근 권한을 갖는 정..
객체의 필드(데이터)를 외부에서 마음대로 읽고 변경할 경우 객체의 무결성이 깨질 수 있다 (예를 들어 자동차의 속력은 음수가 될 수 없는데, 외부에서 음수로 변경하면 객체의 무결성이 깨진다) Car mycar = new Car(); myCar.speed = -100; 이러한 문제점 때문에 객체 지향 프로그래밍에서는 직접적인 외부에서 필드 접근을 막고 대신 메소드를 통해 필드에 접근하는 것을 선호한다 -> 메소드는 데이터를 검증해서 유효한 값만 필드에 저장할 수 있기 때문 이 역할을 하는 메소드가 Setter이다 private double speed; public void setSpeed(double speed) { if(speed < 0) { this.speed = 0; } else { this.spee..
객체를 생성하기 위해 생성자를 어디에서나 호출할 수 있는 것은 아니다 생성자는 public, default, private 접근 제한을 가질 수 있다 public 모든 패키지에서 생성자를 호출할 수 있다 = 모든 패키지에서 객체를 생성할 수 있다 같은 패키지에서만 생성자를 호출할 수 있다 = 같은 패키지에서만 객체를 생성할 수 있다 private 클래스 내부에서만 생성자를 호출할 수 있다 = 클래스 내부에서만 객체를 생성할 수 있다 필드와 메소드도 어디에서나 읽고 호출할 수 있는 것은 아니다 필드와 메소드는 public, default, private 접근 제한을 가질 수 있다 public 모든 패키지에서 필드를 읽고 변경할 수 있다 = 모든 패키지에서 메소드를 호출할 수 있다 같은 패키지에서만 필드를 ..
정적 메소드와 정적 블록은 객체가 없어도 실행된다는 특징 때문에 내부에 인스턴스 필드나 인스턴스 메소드를 사용할 수 없다 또한 객체 자신의 참조인 this도 사용할 수 없다 public class ClassName { int field1; void method1() {...} //정적 필드와 메소드 선언 static int field2; static void method2 { ... } //정적 블록 선언 static { field1 = 10; //컴파일 에러 method1(); //컴파일 에러 field2 = 10; method2(); } //정적 메소드 선언 staitc void method3() { this.filed1 = 10; //컴파일 에러 this.method1(); //컴파일 에러 fiel..