본문 바로가기

JAVA15

💣 3. private 생성자나 열거 타입으로 싱글턴임을 보증하라. 보호되어 있는 글 입니다. 2024. 8. 6.
02. 생성자에 매개변수가 많다면 빌더를 고려하라. 정적 팩토리와 생성자는 선택적 매개변수가 많을 때 대응하기 어렵다는 공통적인 제약이 있다.꼭 내용이 들어가지 않아도 되는 선택적 매개변수가 많을 때 우리는 다음과 같은 선택지가 있다.1. 점층적 생성자 패턴, telescoping constructor pattern→ 필수 매개변수만 받는 생성자에서 선택 매개변수를 하나씩 추가해가면서 다수의 생성자를 만들어 사용하는 방식public class NutritionsFacts_tcp { private final int servingSize; // (mL, 1회 제공량) 필수 private final int servings; // (회, 총 n회 제공량) 필수 private final int calories; // (1회 제공량당) 선택 p.. 2024. 7. 19.
01. 생성자 대신 정적 팩터리 메서드를 고려하라. 클래스의 인스턴스를 얻는 전통적인 방법은 public 생성자를 사용하는 것이다. 하지만 이것 말고도 다른 방법이 하나 더 있다. 바로 정적 팩터리 메서드이다. 각자의 장단점을 잘 알고 상황에 알맞은 선택을 하자. 정적 팩토리 메서드, static factory method▷ 클래스의 인스턴스를 반환하는 단순한 static methodpublic static Boolean valueOf (boolean b) { return b ? Boolean.TRUE : Boolean.FALSE;} 정적 팩토리 메서드의 장점1. 반환될 객체의 특성을 설명하는 이름을 가질 수 있다. 생성자와 달리 정적 팩터리 메서드는 임의로 이름을 지을 수 있는데, 이런 특징을 살려 반환할 객체의 특성을 설명하는 이름을 지어 명시적인 코.. 2024. 5. 30.
클래스와 객체 객체 지향 언어의 특성 캡슐화, Encapsulation 객체를 캡슐로 싸서 내부를 보호하고 볼 수 없게 하는 것 객체는 캡슐화가 기본 원칙이지만 외부와의 접속을 위해 몇 부분만 공개 노출한다. 자바에서의 객체는 클래스라는 캡슐화를 사용하며, 필드(멤버 변수)와 메소드(멤버 함수)로 구성된다. 상속, Inheritance 자식 클래스가 부모 클래스의 속성을 물려받고 기능을 추가하여 확장(extends)하는 개념 부모 클래스를 슈퍼 클래스라고 부르고 자식 클래스를 서브 클래스라고 부른다. 상속은 슈퍼 클래스의 필드와 메소드를 물려받아 코드를 재사용함으로써 코드 작성에 드는 시간과 비용을 줄인다. 다형성, Polymorphism 같은 이름의 메소드가 클래스 혹은 객체에 따라 다르게 동작하도록 구현되는 것 동.. 2022. 12. 29.
[JAVA] #11. 예외처리 error : 프로그램 코드에 의해 해결되기 힘든 심각한 오류 exception : 코드에 의해 수습가능한 미약한 오류 # throw 예외를 고의로 발생시킴 이걸 썼으면 꼭 try catch문을 쓰거나 메서드에 throws를 붙여서 예외처리하도록 해야 함 RuntimeException : 프로그래머의 실수로 발생하는 예외 > try catch 필수 Exception : 사용자의 실수 등 외적요인에 의햄 > try catch 선택 ㅡ + 호출한 메서드로 예외를 전달 + 호출한 메서드에서 처리하도록 할떄 사용 //그니까 만약에 내가 어떤 메서드 sum을 정의 할 때 헤드에 throws nullException라고 붙였어 그러면 만약에 다른 메서드 (main) 에서 sum을 호출해서 쓰는데 sum 진행중에 s.. 2020. 11. 17.
[JAVA] #10. 제어자 + 추상클래스 + 인터페이스 > + 메서드에 static, abstract를 함께 쓸 수 없다. + 클래스에 abstract와 final을 동시에 사용할 수 없다. + abstract 메서드의 접근제어자가 private일 수 없다. + 메서드에 private과 final을 같이 사용할 필요가 없다. # 접근 제어자 $$$ 캡슐화 접근제어자의 필요성 + 외부로부터 데이터를 보호 + 외부에서는 불필요하고 내부적으로만 사용되는 부분을 은닉 # static + 멤버변수, 메서드, 초기화 블록 앞에 사용 + 클래스에 관련된 것, 공통적인 것 *static 멤버변수 : 모든 인스턴스에 공통적으로 사용되는 클래스변수가 된다. //클래스당 하나 : 클래스변수는 인스턴스를 생성하지 않고도 사용 가능하다. : 클래스가 메모리에 로드될 때 생성 *st.. 2020. 11. 17.
[JAVA] # 09. 상속 >> extends + 기존의 클래스를 재사용해서 새로운 클래스를 작성하는 것 + 모든 클래스에 상속은 반드시 하나만 됨 (중복X) + 자손은 조상의 모든 멤버를 상속받음 (private, 생성자, 초기화블럭 제외) / 생성자는 별도로 필요 + 자손의 멤버의 개수는 조상보다 같거나 많아야 한다. + 공통 부분은 조상에서 관리하고 개별부분은 자손이 관리 + 조상의 변경은 자손에게 영향을 미치지만 반대는 아님 # 클래스의 관계 상속 관계 : ~은 ~이다. (is – a) 원은 도형이다. circle is a shape 포함 관계 : ~은 ~을 갖고 있다. (has – a) 원은 점을 가지고 있다. circle has a point / 상속이 안어울리는 관계 - 모든 클래스의 최고 조상 모든 클래스는 Obje.. 2020. 11. 12.
[JAVA] # 08. 클래스와 객체 + 클래스 : 객체를 정의해 놓은 것으로 객체를 생성할 때 사용 + 객체 : 실제로 존재하는 것 (사물 또는 개념) / 객체의 속성과 기능에 따라 다르다. (?) + 인스턴스 : 객체는 인스턴스를 포함하는 일반적인 의미이며 인스턴스는 객체를 생성하는데 사용된다. + 인스턴스화 : 클래스로부터 인스턴스를 생성하는 것(메모리 공간을 잡아주는 것) // 클래스를 인스턴스화 하면 객체가 됨 > - 객체는 속성과 기능으로 구성 속성은 변수로 기능은 메서드로 정의 인스턴스 생성 // Tv myTv; //객체를 다루기위한 참조변수 선언 myTv = new Tv(); // 객체 생성 후, 생성된 객체의 주소를 참조변수에 저장 참조변수는 하나의 인스턴스만 가리킴; 하나의 인스턴스는 여러개의 참조변수를 가질 수 있음 반복.. 2020. 11. 11.
[JAVA] # 07. 배열 드. 디. 어. 시험 끝> 1)과 2)를 한번에 선언할 수 도 있다. 이렇게 int intArray [] = new int [5]; ※ 주의 사항 - 배열 선언 시 [ ]에 크기를 입력하면 컴파일 오류! 배열의 크기는 배열 생성할 때!!! - 배열 선언시에 레퍼런스 변수와 [ ]의 위치는 바꿀 수 있다. int intArray []; //(O) int [] intArray; //(O) - 배열의 인덱스는 음이 아닌 정수만 가능하다. - 배열을 생성하지 않으면 값을 대입할 수 없다. int showError []; //배열에 대한 레퍼런스만 생성 showError[1] = 6; //생성되지 않은 배열을 사용하였으므로 에러남 + 배열의 초기화와 배열의 원소 다루기 - 배열의 초기화 ** 처음 배열을 int .. 2020. 11. 5.