본문 바로가기

LANG..

(15)
abstract & interface abstract abstract 키워드는 클래스와 메서드에 적용된다. 추상(abstract) 클래스는 실체 클래스들의 멤버변수와 메서드들의 이름을 통일할 목적으로 사용한다. 추상(abstract) 메서드가 있는 클래스는 반드시 추상 클래스여야 한다. 추상 클래스에 반드시 추상 메서드만 선언할 필요는 없고 일반 메서드도 선언할 수 있습니다. abstract 클래스 추상 클래스는 new 키워드를 이용해서 객체를 만들지 못하고 오직 상속을 통해서 자식 클래스로 구체화 시켜야 한다. 추상 클래스도 일반 클래스와 마찬가지로 멤버변수, 생성자, 메서드를 선언할 수 있다. new를 사용하여 직접 생성자를 호출할 수는 없지만 자식 객체가 생성될 때 super()를 호출하여 추상 클래스 객체를 생성하므로 추상 클래스도 ..
final final final 키워드는 변수, 메서드, 클래스 등에 적용할 수 있다. final 키워드를 사용하면 해당 요소에 대한 변경이 금지되어 불변성을 부여하거나, 상수를 정의하거나, 상속을 제한하는 등의 목적으로 사용된다. final class는 상속이 불가하다.(서브클래스를 가질 수 없다.) final 메서드는 재정의가 불가하다. final 변수는 값의 변경이 불가하다. 1. final 변수 final 변수는 한번 값을 할당하면 그 값을 변경할 수 없다. (해당 변수는 상수가 된다.) final 변수는 선언시에 초기화하는 방법과, 생성자를 통하여 초기화하는 방법이 있는데 만약 초기화하지 않고 남겨두면 컴파일 에러가 발생한다. 2. final 메서드 final 메서드는 자식 클래스에서 부모 클래스의 메서드..
[디자인 패턴] 템플릿 메소드 패턴 (Template Method Pattern) 템플릿 메소드 패턴 : 큰 틀에서 알고리즘의 구조를 정의하고, 일부 단계를 서브클래스로 미루어 확장 가능하게 하는 디자인 패턴이다. -> 변하지 않는 기능은 상위 클래스에 만들어두고, 자주 변경되며 확장할 기능은 하위 클래스에서만 만든다. - 추상 클래스에 템플릿 메소드를 정의하고,이 메소드 내에서 구체적인 단계를 나타내는 추상 메소드들을 호출한다. - 서브클래스에서 추상 메소드들을 구현해 알고리즘을 완성시킨다. 템플릿 메소드 - lotteryCycle 메소드가 템플릿 메소드로 작용한다. -> buyLottery, checkWinLottery, getLotteryMoney라는 추상 메소드들을 호출한다. - lotteryCycle 메소드는 Lottey 클래스의 일부로 정의되어 있고, final 키워드로 선..
[디자인패턴] 싱글톤 패턴(Singleton Pattertn) 싱글톤 패턴 (Singleton Pattern): - 싱글톤 패턴은 어떤 클래스가 단 하나의 객체를 가지고, 이에 대한 전역적인 접근점을 제공하는 패턴이다. - 이 패턴을 사용하면 특정 클래스의 인스턴스가 하나만 생성되도록 보장할 수 있으며, 어디서든 이 인스턴스에 접근할 수 있게 전역의 개념으로 객체를 사용할 수 있다. - 인스턴스를 무분별하게 많이 만들어서 메모리를 많이 잡아먹는 현상을 방지할 수 있다. -> 메모리 절약을 위해 인스턴스가 필요할 때 새로 만들지 않고 기존의 인스턴스를 활용하는 기법 - 의존성이 높아진다는 단점이 있다. package Singleton; public class singleton { /* * 싱글톤 패턴 - 객체를 1개만 만들어 유지하기 위한 디자인 패턴 * 1. 외부에..
static static static 제한자는 변수, 메서드에 적용되는 자바의 키워드 static 메서드나 변수는 해당 클래스의 객체 없이도 참조 가능하다. static 블록(static 메서드, static 초기화자) 안에는 static 변수만 사용해야하고, static 메서드만 호출할 수 있다. 즉 static 블록에서 non-static 멤버를 객체 생성 없이 직접 참조할 수 없다. static 제한자는 지정된 변수와 메서드를 객체와 무관하게 만들어주기 때문에 this를 가질 수 없다. static 메서드는 non-static 메서드로 재정의(Overriding) 될 수 없다. static에 단순히 블록({ })을 사용한 경우에는 정적 초기화자라고 부르며, static 변수를 초기화하는 역할을 가지고 클래스가 ..
객체 지향 프로그래밍(OOP) 객체 지향 프로그래밍 (OOP)에는 추상화(abstraction), 캡슐화(Encapsulation), 상속(Inheritance), 다형성(Polymorphism)이 있다. (+) - 코드의 재사용이 용이하고, 유지보수가 쉽다. ( - ) - 상대적으로 처리 속도가 느리고, 설계 시 많은 시간과 노력이 필요하다. * 추상화 : 불필요한 세부사항들은 제거하고, 핵심적인 기능이나 특성을 간추려내는 것 * 상속 : 기존에 존재하는 클래스로부터 변수와 메서드를 이어받는 기능 * 캡슐화 : 은닉으로도 불리며, 사용자에게 상세한 내부 구현을 숨기고 필요한 부분만 보이게 하는 기능으로 코드를 수정 없이 재활용하는 것을 목적으로 한다. * 다형성 : 하나의 변수명이나 함수명이 상황에 따라 해석이 동일한 메시지이나 객..
오버로딩과 오버라이딩 오버로딩 (Overloading): 오버로딩은 같은 이름의 메서드를 여러 개 정의하되, 매개변수의 개수나 타입을 다르게하여 메서드의 다양한 버전을 제공하는 것이다. 오버로딩은 컴파일러에 의해 메서드 호출 시에 어떤 버전의 메서드를 사용할지 결정된다. 1. 매개변수의 개수가 다른 경우: 2. 매개변수의 개수가 다른 경우: 오버라이딩 (Overriding): 오버라이딩은 부모 클래스에서 이미 정의된 메서드를 자식 클래스에서 동일한 시그니처(메서드 이름, 매개변수 타입 및 개수, 반환 타입)로 다시 정의하는 것이다. 이를 통해 자식 클래스는 부모 클래스의 메서드를 재정의하여 자신에게 맞게 변경할 수 있다. 1. 메서드 오버라이딩 예시: 2. 상속 관계에서만 가능: 오버라이딩은 부모 클래스와 자식 클래스 간에만..