java/ㄴ CHAPTER 7. 객체지향 프로그래밍 2
-
CHAPTER 7. (9) 내부 클래스란? (인스턴스, 스태틱, 지역, 익명 클래스 포함)java/ㄴ CHAPTER 7. 객체지향 프로그래밍 2 2020. 4. 2. 13:57
내부 클래스 - 클래스 내에 선언된 클래스 ㄴ 왜? 두 클래스가 서로 긴밀한 관계 - 클래스 내에 선언된다는 점 제외, 일반 클래스와 다르지 않음 장점 - 두 클래스 멤버간 서로 쉽게 접근 가능 (private 접근 가능) - 외부에 불필요한 클래스 감춤 (코드 복잡성 감소) 주의 - 내부 클래스 B가 외부 클래스인 A를 제외하고 다른 클래스들에서 잘 사용되지 않는 것이어야 함 ex. A 클래스와 관련된 상호작용만 하는 C 클래스 종류 - 인스턴스 클래스 ㄴ 클래스 안에 클래스 (거의 얘만 씀) - 스태틱 클래스 ㄴ 클래스 안에 static 클래스 (거의 안씀) - 지역 클래스 ㄴ 클래스 안에 있는 메서드 안에 정의된 클래스 (거의 안씀) - 익명 클래스 ex. class Outer { class Ins..
-
CHAPTER 7. (8) 인터페이스란? ★java/ㄴ CHAPTER 7. 객체지향 프로그래밍 2 2020. 4. 2. 13:51
인터페이스 - 기획서 - 일종의 추상 클래스 (다른 클래스 작성 시 도움 주기 위한 목적) - 추상 메서드를 갖지만 추상 클래스보다 추상화 정도가 높음 - 오직 추상 메서드와 상수만을 가짐 (일반 메서드, 멤버 변수 불가) - 접근 제어자로 public , default만 가능 조건 - 모든 변수는 public static final (생략 가능) - 모든 메서드는 public abstract (생략 가능) ㄴ 왜? 모든 멤버에 예외없이 적용되는 사항이기 때문 (생략된 제어자는 컴파일 시 컴파일러가 자동으로 추가함) 특징 - 인터페이스로부터만 상속 받음 - 다중 상속 가능 (여러 인터페이스로부터 상속 받기 가능 - 클래스와 차이점) ★ ex. Fightable f = (Fightable)new Fight..
-
CHAPTER 7. (7) 추상 클래스란? (추상 메서드 포함)java/ㄴ CHAPTER 7. 객체지향 프로그래밍 2 2020. 4. 2. 13:50
추상 클래스 - 미완성 설계도 - 추상 메서드 (미완성 메서드) 를 포함한 클래스 - 추상 클래스로 인스턴스 생성 불가 - 상속을 통해서 자식 클래스에 의해서 완성 가능 사용 이유? ㄴ 새로운 클래스 작성시 바탕이 되는 부모 클래스 (목적: 자식 클래스들이 완성하게 하기 위해) ★ 추상 클래스는 인스턴스 생성 불가 ㄴ 그럼 어떻게? = 메서드를 통해서 완전히 구현된 클래스의 인스턴스를 받아옴 왜 인스턴스를 직접 생성하지 않는가? (왜 메서드를 통해서 인스턴스를 받아 오는가?) ㄴ 최소한의 변경으로 프로그램이 동작하게 하기 위해서 ★ ex. 인스턴스 생성하도록 프로그램이 작성되어 있다면 = 다른 종류의 캘린더를 사용하는 국가에서 실행 시 (다른 종류의 인스턴스를 필요로 하는 경우) 메인 클래스를 변경해야 ..
-
CHAPTER 7. (6) 다형성이란? (참조변수 형변환, 매개변수 다형성, instanceof연산자 포함) ★★java/ㄴ CHAPTER 7. 객체지향 프로그래밍 2 2020. 4. 2. 11:14
★ - 여러 가지 형태를 가질 수 있는 능력 1. 부모 (클래스) 타입의 참조변수로 자식 (클래스) 타입 인스턴스를 참조 가능 2. 실행하는 메서드는 동일하지만, 부모 타입의 참조 변수에 따라 실제로 조립된 객체의 재정의(오버라이딩)된 내용 실행 : ★ 실행하는 메서드 동일, 실제 조립된 객체에 따라 다른 실행결과 발현됨 - 필수적으로 재정의 필요 - 재정의 관계일 때 가장 바깥의 것이 실행됨 즉, 지금까지는 인스턴스 타입과 일치하는 타입의 참조변수만 사용 ex. Tv t = new Tv(); CaptionTv c = new CaptionTv(); but 서로 상속 관계일 경우, 부모 클래스 타입의 참조변수로 자식 클래스의 인스턴스 참조 가능 ex. Tv t = new CaptionTv(); 실제 인스턴..
-
CHAPTER 7. (4) 제어자란? (static, final 포함)java/ㄴ CHAPTER 7. 객체지향 프로그래밍 2 2020. 4. 2. 08:59
제어자 - 클래스, 변수, 메서드 선언부 등에 함께 사용되어 부가적인 의미 부여 - 접근 제어자와 그 외로 나뉨 접근 제어자 public, protected, default, private - 네 가지 중 하나만 선택 가능 그 외 static, final, abstract, native, transient, synchronized, volatile, strictfp 접근 제어자 private ㄴ 같은 클래스 내에서만 접근 가능 default ㄴ 같은 패키지 내에서만 접근 가능 protected ㄴ 같은 패키지 내, 다른 패키지 자식 클래스에서 접근 가능 public ㄴ 접근 제한 없음 접근 제어자 사용 이유? 1. 클래스 내부에 선언된 데이터를 보호하기 위해 (데이터 유효한 값 유지, 외부에서 변경 불가..
-
CHAPTER 7. (3) 패키지란? (import문 포함)java/ㄴ CHAPTER 7. 객체지향 프로그래밍 2 2020. 4. 2. 08:56
패키지 - 클래스의 묶음 - 클래스 or 인터페이스 포함 가능 - 관련 클래스끼리 묶음 (효율적 관리 가능) - 같은 이름 클래스라도 서로 다른 패키지 가능 (이름 충돌 방지) ex. java.lang.String클래스 = 디렉토리 java의 서브 디렉토리 lang에 속한 String.class 파일 패키지 선언문 package 패키지명; - 선언문은 반드시 주석, 공백을 제외한 첫 번째 문장 - 대소문자 모두 허용, but 클래스명과 쉽게 구분 위해 소문자를 원칙 - 모든 클래스는 반드시 하나의 패키지에 포함 ㄴ 지금까지 문제 없던데? ㄴ 지정하지 않은 클래스는 자동으로 unnamed package에 속함 = 큰 프로젝트, Java API 등 클래스 라이브러리 작성하는 경우 미리 패키지 구성해서 적용 ..
-
CHAPTER 7. (2) 오버라이딩이란? (super, this 포함) ★java/ㄴ CHAPTER 7. 객체지향 프로그래밍 2 2020. 4. 2. 08:55
오버라이딩 - 상속받은 메서드의 내용을 변경하는 것 = 상속 받은 메서드 그대로 사용하지 않고, 자식 클래스에 맞게 변경하는 것 조건 1. 선언부가 부모 클래스의 메서드와 일치해야함 (메서드 이름, 매개변수, 반환타입) 2. 접근 제어자를 부모 클래스보다 좁게 설정 할 수 없음 (protect라면, 자식 클래스는 public, protect만 가능) 3. 예외는 부모 클래스 메서드보다 많이 설정 불가 (부모 클래스 예외 메서드가 2개라면 자식 클래스 예외 메서드는 1개) ★ 오버로딩 오버라이딩 차이? 오버로딩 : 기존에 없는 새로운 메서드 추가 (중복정의) 오버라이딩 : 부모로부터 상속받은 메서드 내용 변경 (재정의) ★ super - 자식 클래스에서 부모 클래스로부터 상속받은 멤버 참조시 사용되는 참조..