다형성(Polymorphism)
: 동일한 코드가 상황에 따라서 전혀 다른 메소드를 호출하는 것.
▷ 상속과 오버라이딩을 통해서 구현한다. Bcz. 하나의 코드가 다른 메소드를 호출하려면 다른 클래스의 인스턴스를 참조할 수 있어야 하기 때문이다. 다른 클레스의 인스턴스를 참조할 수 있는 것은 하위 클래스 밖에 안되어 상속이 필요하다)
추상클래스(abstract class)
: 인스턴스를 생성할 수 없는 클래스
▷ class 앞에 abstract를 추가하면 추상클래스를 만들 수 있다.
▷ 왜 만들어야 하나? 여러개의 클래스에 공통된 내용이 있어서
Interface
: 추상메소드와 상수 그리고 default 메소드를 가진 개체.
▷ 모형을 먼저 만들고, 상속 받은 클래스에서 구현해서 사용.⇒템플릿 메소드 패턴
▷ 추상클래스처럼 인스턴스 생성을 못한다.⇒new 할 수 없다.
▷ 추상클래스는 extends로 상속하고 / 인터페이스는 implements로 구현한다.
▷ 여러개를 implements할 수 있다.
▷ 인터페이스에는 abstract를 붙이지 않아도 메소드는 추상메소드가 된다.
▷ 인터페이스에서 변수를 선언하면 자동으로 final이 붙는다.⇒변수를 변경할 수 없음
▷ 인터페이스에 내용이 있는 메소드를 만드려면, 결과형 앞에 default를 붙여야 한다.
▷ 인터페이스는 인스턴스를 생성할 순 없지만 참조형 변수는 선언이 가능하다.
▷ 인터페이스의 참조형 변수에는 인터페이스를 implements한 클래스의 인스턴스를 대입할 수 있다.
▷ 메소드의 매개변수가 인터페이스나 추상클래스이면, 인터페이스나 추상클래스를 상속받은 클래스의 인스턴스를 대입하라는 것이다. (없으면 만들어서 대입하라는 것이다)
▷ 매개변수의 자료형이 Object 이면 어떤 데이터든지 대입이 가능하다.
▷ 메소드의 return 타입이 인터페이스나 추상클래스이면, 변수에 저장해서 사용해야 한다. 상속 받은 클래스가 있다면 강제 형변환해서 사용해야 한다.
▷ 메소드의 return 타입이 Object이면 반드시 형변환해서 사용해야 한다.(Object에는 어떤 자료형이든 대입이 가능하다고 했는데 꺼내서 쓸 때는 그 객체의 자료형이 무엇인지 알 수 없기 때문에 진짜 자료형을 확인 한 후에 진짜 자료형으로 강제형변환 해서 사용해야 한다)
Inner Class
: 클래스 안에 생성하는 클래스.
▷ 클래스 내부나 메소드 안에 클래스를 생성해서 사용하는 것이 가능
Anonymous Class
: 클래스를 별도로 생성하지 않고 인스턴스를 생성해서 사용하는 것.
▷ 어떤 클래스를 상속받아서 인스턴스를 만든 후 1번만 사용하는 경우에 주로 사용
▷ 만드는 방법
new 인터페이스 나 클래스이름 (){
메소드 재정의
}
'JAVA 공책 > => 다시 정리' 카테고리의 다른 글
Parameter (0) | 2018.08.24 |
---|---|
Exception Handling(예외처리) (0) | 2018.08.23 |
Trigger (0) | 2018.07.31 |
Oracle의 프로그래밍 PL/SQL & Procedure (0) | 2018.07.31 |
Database에서의 Inline view & Rownum & Sequence & Index & Synonym (0) | 2018.07.31 |