반응형

객체지향 22

[Java, 객체지향] 템플릿 메서드란?

[Java, 객체지향] 템플릿 메서드란? '템플릿'은 말 그대로 틀이나 견본을 의미한다. 그렇다면 '템플릿 메서드'는 무엇일까? 템플릿 메서드는 추상 메서드나 구현된 메서드를 활용하여 전체의 흐름(시나리오)을 정의해 놓은 메서드를 의미한다. final로 선언하여 재정의할 수 없게 한다. '템플릿 메서드 패턴'은 사실 Java에서 쓰이는 말은 아니다. 디자인 패턴의 일종으로, 프레임 워크에서 많이 사용되는 설계 패턴이다. 추상 클래스로 선언된 상위 클래스에서 추상 메서드를 이용하여 전체 구현의 흐름을 정의하고, 메서드 구현의 구체적인 부분은 하위 클래스에 위임한다. 그렇지만 하위 클래스가 다른 구현을 했다고 해도 템플릿 메서드에 정의된 시나리오대로 수행된다.

Java 2021.08.17

[Java, 객체지향] 인터페이스란? (Interface)

[Java, 객체지향] 인터페이스란? (Interface) 인터페이스란? 인터페이스는 클라이언트 프로그램에 어떤 메서드를 제공하는지 알려주는 명세(specification) 또는 약속이다. '한 객체가 어떤 인터페이스의 타입이다'라는 것은, 그 인터페이스의 메서드를 구현했다는 의미이다. 클라이언트 프로그램은 실제 구현 내용을 모르더라도 인터페이스의 정의만 알면 그 객체를 사용할 수 있다. 쉽게 말하자면, 인터페이스는 추상 메서드의 집합이다. 즉, 구현된 것이 전혀 없는 껍데기와 같다. (jdk 1.8 이상을 제외하고선, 인터페이스의 모든 멤버는 public이다) interface 인터페이스명 { public static final 타입 상수명 = 값; public abstract 메서드명(); } 이때,..

Java 2021.08.17

[Java, 객체지향] 제어자란? (modifier) (접근 제어자 & static, final, abstract)

[Java, 객체지향] 제어자란? (modifier) (static, final, abstract) modifier란? Java에서 modifier(제어자, 제한자)란 클래스와 클래스의 멤버(멤버 변수, 메서드)에 부가적인 의미를 부여하는 것이다. modifier에는 접근 제어자와 접근 제어자가 아닌 것이 있다. 1. 접근 제어자 : public, protected, 선언되지 않음(default), private 접근 제어자에 관련된 내용은 아래 링크 속 하단에 정리해두었다. https://unit-15.tistory.com/entry/Java-%EA%B0%9D%EC%B2%B4%EC%A7%80%ED%96%A5-%ED%81%B4%EB%9E%98%EC%8A%A4-%EC%83%81%EC%86%8Dinherit..

Java 2021.08.12

[Java, 객체지향] 패키지란?

[Java, 객체지향] 패키지란? 패키지란? (Package) 패키지는 서로 관련된 클래스의 묶음을 의미한다. 클래스는 클래스 파일이고(*.class), 패키지는 폴더라고 할 수 있다. 클래스 패스란? (Classpath) 클래스 패스는 클래스 파일의 위치를 알려주는 경로이다. import문 생성 단축키 클래스를 사용할 때 원래는 패키지 이름을 다 입력해야 한다. 하지만 import문을 이용하면 이를 생략해도 된다. import문을 자동으로 삽입해주는 단축키는 'Crtl+Shift+O'이다. import문 선언 import 패키지.클래스; 또는 import 패키지.*; // 모든 클래스를 import Java를 사용하면서 많이 사용하는 메서드인 System.out.println(); 함수는 알고보면 Sy..

Java 2021.08.12

[Java, 객체지향] 지역 변수, 멤버 변수의 초기화

[Java, 객체지향] 지역 변수, 멤버 변수의 초기화 아래 링크 참고 https://unit-15.tistory.com/entry/Java-%EA%B0%9D%EC%B2%B4%EC%A7%80%ED%96%A5-%EC%84%A0%EC%96%B8%EC%9C%84%EC%B9%98%EC%97%90-%EB%94%B0%EB%A5%B8-%EB%B3%80%EC%88%98-%EC%A2%85%EB%A5%98 지역변수는 사용전 꼭 수동 초기화 해야한다. 반면, 멤버 변수는 자동 초기화된다. 자동 초기화될 때의 기본값은 자료형마다 다르다. 숫자형의 기본값은 0, boolean의 기본값은 false, 참조형의 기본값은 null 멤버변수의 초기화에는 세 가지 방법이 있다. 1. 명시적 초기화 대입연산자 '='를 이용한 초기화 방법..

Java 2021.08.11

[Java, 객체지향] 생성자(constructor) 의미와 종류 (+this)

[Java, 객체지향] 생성자(constructor) 의미와 종류 (+this) 생성자 인스턴스가 생성될 때마다 호출되는 인스턴스 초기화 메서드를 생성자라고 한다. 즉, 생성자는 인스턴스 변수의 초기화 작업에 주로 사용된다. 생성자를 만들 때, 생성자의 이름은 클래스 이름과 같아야 한다. 또한 생성자는 리턴값이 없다. (= void를 붙이지 않는다.) 모든 클래스는 반드시 생성자를 가져야 한다. 생성자에는 기본 생성자와 매개변수가 있는 생성자가 있다. 1. 기본 생성자 (default constructor) 매개변수가 없는 생성자이며, 생성자가 하나도 없을 때는 컴파일러가 자동으로 추가해준다. 형식: 클래스이름( ) { } 2. 매개변수가 있는 생성자 매개변수가 있는 생성자이다. 기본 생성자 없이 매개변..

Java 2021.08.11

[Java, 객체지향] 오버로딩이란? (overloading)

[Java, 객체지향] 오버로딩이란? (overloading) 오버로딩 (Overloading) overload는 영어로 '과적하다'라는 뜻으로, overloading은 한 클래스 안에 같은 이름의 메서드를 여러 개 정의하는 것이다. 오버로딩이 성립하려면 아래 조건을 모두 만족해야 한다. 메서드 이름이 같아야 한다. 매개변수의 개수 또는 타입이 달라야 한다. 반환(return) 타입은 영향 없다. (=return 타입이 다르다고 오버로딩이 성립하는 게 아니다) ex. long add(int a, long b) { return a+b; } long add(long a, int b) { return a+b; } 변수는 같은 이름이 여러 개 있을 수 없다. 메서드도 변수처럼 같은 이름이 여러 개 있으면 안 될..

Java 2021.08.11

[Java, 객체지향] IS-A 관계, HAS-A 관계 차이 (상속 Inheritance)

[Java, 객체지향] IS-A 관계, HAS-A 관계 차이 (상속 Inheritance) IS-A 관계 (is a relationship) 말 그대로, '~은 ~이다.'로 상속관계를 의미한다. 상속에서 is-a 관계는 일반적인 개념과 구체적인 개념과의 관계이다. 상위 클래스가 일반적인 개념 클래스이고 하위 클래스가 구체적인 개념 클래스가 된다. (ex. 상위 클래스: 동물 / 하위 클래스: 포유류, 파충류) is-a 관계는 단순히 코드를 재사용하는 목적으로는 사용하지 않는다. (*IS-A 관계 읽는법: "이즈 어 관계"라고 읽는다.) HAS-A 관계 (has a relationship) 말 그대로, '~은 ~을 가지고 있다.'로 포함관계를 의미한다. 상속에서 has-a 관계는 한 클래스가 다른 클래스를..

Java 2021.08.11

[Java, 객체지향] 다형성이란? (Polymorphism)

[Java, 객체지향] 다형성이란? (Polymorphism) 다형성이란? 다형성은 하나의 코드가 여러 자료형으로 구현되어 실행되는 것이다. 즉, 같은 코드에서 여러 실행 결과가 나오는 것, 조상 타입 참조 변수로 자손 타입 객체를 다루는 것이다. ex. Customer c = new VIPCustomer(); 조상 타입(Customer) 참조 변수(c)로 자손 타입(VIPCustomer) 객체를 다룸 다형성은 정보은닉, 상속과 더불어 객체지향 프로그래밍의 가장 큰 특징 중 하나이며 객체지향 프로그래밍의 유연성, 재활용성, 유지보수성에 기본이 되는 특징이다. 참조변수가 조상 타입일 때와 자손 타입일 때의 다른 점은, 사용할 수 있는 멤버의 개수이다. 다형성을 사용하는 장점 다양한 여러 클래스를 하나의 자..

Java 2021.08.11
반응형