J_Log
로그인
J_Log
로그인
[Java] 간단 정리 6
J_Log
·
2023년 5월 29일
팔로우
0
Java
0
Java
목록 보기
6/6
배열로 여러 종류의 객체 다루기
조상 타입의 배열에 자손들의 객체를 담을 수 있음
다형성의 장점
다형적 배개변수
하나의 배열에 여러 종류 객체 저장
추상클래스, 추상메서드
추상 클래스(abstract class)
미완성 설계도, 미완성 메서드를 갖고 있는 클래스
제어자 abstract를 앞에 붙임
다른 클래스 작성에 도움을 주기 위한 것, 인스턴스 생성 불가
상속을 통해 추상 메서드를 완성해야 인스턴스 생성 가능
추상 메서드(abstract method)
미완성 메서드, 구현부가 없는 메서드
꼭 필요하지만 자손마다 다르게 구현될 것으로 예상되는 경우, 만약 자손에서 일부 메서드를 구현하지 않는다면 abstract 제어자를 붙여서 추상 메서드를 선언해야 함 -> 추상 메서드(미완성 메서드)가 존재함으로 그 클래스 또한 abstract
추상 메서드 호출 가능(호출 시 선언부만 필요)
인터페이스
추상 메서드의 집합
구현된 것이 전혀 없는 설계도, 모든 멤버가 public
상속 받을 시 implements 이용
인터페이스의 조상은 인터페이스만 가능(최고 조상 Object 아님)
다중 상속 가능(구현된 메서드가 없기 때문에 문제 없음)
인터페이스와 다형성
인터페이스 타입 파라미터는 인터페이스를 구현한 클래스의 객체만 가능
인터페이스를 메서드의 리턴 타입으로 지정할 수 있음
인터페이스의 장점
두 객체 간의 '연결, 대화, 소통'을 돕는 중간 역할을 함
선언(설계)과 구현을 분리시켜 줌
개발 시간 단축
변경에 유리한 유연한 설계 가능
표준화 가능
서로 관계없는 클래스들에 관계를 맺어줄 수 있음
디폴트, static 메서드
인터페이스는 추상 메서드의 집합이다. 근데 default와 static을 곁들인..(jdk 1.8부터)
여기저기 상속받은 자손들이 있기에 인터페이스에 새로운 메서드를 추가하기 어려움 -> default method 사용
default 메서드는 인스턴스 메서드(인터페이스 원칙 위반)
디폴트 메서드가 기존의 메서드와 충돌할 때 해결책
여러 인터페이스의 디폴트 메서드 간 충돌 -> 인터페이스를 구현한 클래스에서 디폴트 메서드를 오버라이딩해야 함
디폴트 메서드와 조상 클래스의 메서드 간 충돌 -> 조상 클래스의 메서드가 상속되고, 디폴트 메서드는 무시됨
모두 오버라이딩하면 해결됨
내부 클래스(inner class)
클래스 안 클래스
내부 클래스의 장점
내부 클래스에서 외부 클래스의 멤버들에 쉽게 접근 가능
코드의 복잡성을 줄일 수 있음 -> 캡슐화
익명 클래스(anonymous class)를 제외한 기존의 iv, cv, lv와 포지션이 동일함 -> instance class, static class, local class
내부 클래스의 제어자와 접근성
내부 클래스의 제어자는 변수에 사용 가능한 제어자와 동일
static 멤버는 static 클래스에만 정의할 수 있음(단, final static 상수는 모두 정의 가능)
J_Log
공부합시다
팔로우
이전 포스트
[Java] 간단 정리 4
0개의 댓글
댓글 작성