- Object 타입
Array 내부에 여러 자료형의 데이터를 넣기 위해서는 Array를 Object 타입으로 선언한다.
- 추상 클래스(추상 메소드)
- 특정 메소드가 미완성된 상태를 의미한다.
- 해당 유틸리티나 프레임워크를 사용하는 개발자가 해당 메소드만큼은 본인의 용도에 맞게끔 사용하기 위해 추상 클래스를 사용한다.
주의 사항) 추상 메소드가 하나라도 있으면 해당 클래스는 추상 클래스로 변경된다.
// 추상 클래스
public abstract class Weapon {
// 일반 메소드
public void prepare() {
System.out.println("무기 준비 중");
}
// 추상 메소드
public abstract void attack();
}
- 객체 생성
- 클래스 타입으로서는 완벽하다.
- 추상 클래스는 new 생성자() 를 할 수 없다. (객체 생성 불가)
- 해결 방법
1. 자식 클래스에서 상속을 한다.
2. 추상 클래스의 추상 메소드를 자식 클래스에서 Override 한다.
참고 사항) 자식 객체로 만든 부모 타입의 변수에서는 자식 객체의 Override된 메소드를 호출할 수 있다.
- 내부 클래스
- 클래스 내부에 선언한 클래스- 형식1
Zoo z = new Zoo(); Zoo.Monkey m1 = z.getMonkey(); m1.say();
- 형식2
import test.pack.Zoo.Tiger; Zoo z = new Zoo(); Tiger m1 = z.getMonkey(); m1.say();
- 지역 내부 클래스
- 메소드 내부에 선언한 클래스- 형식
public static void main(String[] args) { class Missile extends Weapon { @Override public int attack(int hp, int bullet) { System.out.println("Missile공격"); return 0; } } }
- interface
- 추상 메소드만 존재하는 인터페이스
- 메소드 모양이 완벽하므로 데이터 타입이 가능하다.
주의 사항) 인터페이스는 상속(extends)이 아니라 구현(implements)하는 것이다.
주의 사항) 인터페이스는 여러 interface를 구현(implements)할 수 있다.
주의 사항) 필드는 static final 필드만 가질 수 있다.- 형식
public interface V { // 필드는 static final 필드만 가질 수 있다. public static final String COMPANY="DANGGUEN"; public void V1(); public void V2(); }
- final
- 필드나 지역 변수에 final 이라는 예약어를 붙이면 변수가 아니고 상수가 된다.
- 상수는 값이 변경되지 않는 것을 의미한다.
- final 지역 변수나 필드는 모두 대문자로 표기한다.final int NUM = 10; final String NAME = "aa"; final V A2 = new V2();