목록JAVA/개념정리 (29)
Frog is cry
자동 타입 변환, 다형성, 강제타입변환, instanceof, 인터페이스 상속 인터페이스도 메소드 재정의와 타입 변환되므로 다형성을 구현할 수 있다. 인터페이스의 다형성 > 인터페이스 사용 방법은 동일하지만 구현 객체 교체하여 프로그램 실행 결과를 다양화 자동 타입 변환(promotion) > 구현 객체와 자식 객체는 인터페이스 타입으로 자동 타입 변환 된다. 필드의 다형성 자동차는 타이어 인터페이스를 이용해서 동일한 방법으로 금호 타이어를 사용. 구현객체1(한국타이어), 구현객체2(금호 타이어) 이후 자동차 객체에서는 필요한것만 꺼내서 사용가능 매개변수의 다형성 >어떤 객체가 대입됐냐에 따라서 결과가 바뀌는 매개변수의 다형성 강제 타입변환(casting) > 구현 객체가 인터페이스 타입으로 자동 변환하..
안터페이스, 상수 필드, 추상 메소드, 구현 클래스, 인터페이스 사용 인터페이스(Interface) > 개발 코드는 인터페이스를 통해서 객체와 서로 통신한다. > 인터페이스의 메소드 호출하면 객체의 메소드가 호출된다. > 개발 코드를 수정하지 않으면서 객체 교환이 가능하다. > 인터페이스란 객체의 사용 방법을 정의한 타입이다. > 인터페이스를 통해 다양한 객체를 동일한 사용 방법으로 이용할 수 있다. > 인터페이스를 이용해서 다형성을 구현할 수 있다. 인터페이스 선언 > .java 형태 소스 파일로 작성 및 컴파일러 통해 ~class 형태로 컴파일된다. 클래스와 물리적 파일 형태는 같으나 소스 작성 내용이 다르다. ex) [public] interface 인터페이스이름 {....} 인터페이스는 객체로 생..
추상 클래스, 추상 메소드, 재정의 여러 클래스의 공통된 특성(필드, 메소드)를 추출해서 선언한 것을 추상클래스라고 한다. 추상 클래스 > 실체 클래스(객체 생성용 클래스)들의 공통적인 특성(필드,메소드)을 추출하여 선언한 것 > 추상 클래스와 실체 클래스는 부모, 자식 클래스로서 상속 관계를 가짐 ex) Bird, Insect, Fish를 실체 클래스라고 부르며, Animal은 추상 클래스이다. ex) TelePhone, SmartPhone를 실체 클래스라고 부르며, Phone은 추상 클래스이다. 추상 클래스의 용도 > 실체 클래스에 반드시 존재해야할 필드와 메소드의 선언(실체 클래스의 설계 규격 - 객체 생성용이 아님) > 실체 클래스에는 공통된 내용은 빠르게 물려받고, 다른 점만 선언하면 되므로 시..
클래스 타입 변환, 자동 타입 변환, 다형성, 강제 타입 변환, instanceof 기본타입과 마찬가지로 클래스도 타입 변환이 있다. ex) int i = 10; / double d = i; ex) A a = new A(); / B b = a; 이를 활용하면 객체 지향 프로그래밍의 다형성을 구현할 수 있다. 다형성 > 사용 방법은 동일하지만 다양한 객체 활용에 여러 실행결과가 나오도록 하는 성질 > 메소드 재정의와 타입 변환으로 구현 자동 타입 변환(promotion) > 프로그램 실행 도중 자동으로 타입 변환 일어나는 것 > 부모타입 변수 = 자식타입; 일경우만 가능 부모 타입으로 자동 타입 변환 이후에는 부모 클래스에 선언된 필드 및 메소드만 접근 가능 예외적으로, 메소드가 자식 클래스에서 재정의될 ..
메소드 재정의 (오버라이딩 / Overriding) > 부모 클래스의 메소드가 자식 클래스에서 사용하기에 부적합할 경우 자식 클래스에서 수정하여 사용 메소드 재정의 방법 > 부모 메소드와 동일한 시그니처 가져야 함 > 접근 제한 더 강하게 재정의할 수 없음 > 새로운 예외를 throws 할 수 없음 final 클래스와 final 메소드 > 해당 선언이 최종 상태이며 수정될 수 없음을 의미 > 클래스 및 메소드 선언 시 final 키워드를 사용하면 상속과 관련됨 상속할 수 없는 final 클래스 > 부모 클래스가 될 수 없어 자식 클래스 만들 수 없음을 의미 ex) public final class 클래스 { ...} > extedns 불가 상속 > 부모 클래스의 필드와 메소드를 자식 클래스에서 사용할 수..
상속, 메소드 재정의, final 클래스, final 메소드 상속 > 이미 개발된 클래스를 재사용하여 새로운 클래스를 만들기에 중복되는 코드를 줄임 > 부모 클래스의 한번의 수정으로 모든 자식 클래스까지 수정되는 효과가 있어 유지보수 시간이 줄어듬 클래스 상속 > 자식 클래스 선언 시 부모 클래스 선택 > extends 뒤에 부모 클래스 기술 ex) class 자식클래스 extends 부모클래스 { } > 여러 개의 부모 클래스 상속할 수 없음 > 부모 클래스에서 private 접근제한 갖는 필드와 메소드는 상속 대상에서 제외 > 부모와 자식 클래스가 다른 패키지에 존재할 경우 default 접근 제한된 필드와 메소드 역시 제외
패키지 선언, import문, 접근제한자, Getter/Setter 패지키 > 패키지의 물리적인 형태는 파일 시스템의 폴더 > 패키지는 클래스의 일부분으로, 클랙스를 유일하게 만들어주는 식별자 역할 > 클래스 이름이 동일하더라도 패키지가 다르면 다른 클래스로 인식 > 클래스의 전체 이름은 패키지 > 클래스 사용해서 다음과 같이 표현 패키지 선언 > 클래스 작성 시 해당 클래스가 어떤 패키지에 속할 것인지를 선언 package.상위패키지.하위패키지; import문 > 사용하고자 하는 클래스 또는 인터페이스가 다른 패키지에 소속된 경우 > 해당 패키지 클래스 또는 인터페이스 가져와 사용할 것임을 컴파일러에 통치 접근제한자 (access modifier) > 클래스와 인터페이스 및 이들이 가진 멤버의 접근 제..
클래스에 선언된 필드와 메소드가 모두 객체 내부에 포함되는 것은 아니다. 객체가 있어야 사용 가능한 멤버가 있고, 그렇지 않는 멤버도 있다. 인스턴스 멤버 : > 객체마다 가지고 있는 넘버, 객체를 생성한 후 사용할 수 있는 필드와 메소드 인스턴스 필드 : > 힙 영역의 객체 마다 가지고 있는 멤버, 객체마다 다른 데이터를 저장 인스턴스 메소드 : > 객체가 있어야 호출 가능한 메소드, 클래스 코드(메소드 영역)에 위치하지만, 이해하기 쉽도록 객체마다 가지고 있는 메소드라고 생각해도 됨. 정적 멤버 : > 객체와 상관없는 멤버, 클래스 코드(메소드 영역)에 위치 > 클래스에 고정된 멤버로서 객체 생성하지 않고 사용할 수 있는 필드와 메소드 정적 필드 및 상수 : > 객체 없이 클래스만으로도 사용 가능한 ..