230502 day21 개념 정리

Jin·2023년 5월 25일
0

codenotion

목록 보기
18/90
post-thumbnail
인터페이스 : 객체의 사용방법을 정의한 타입, 다형성 구현 

interface 인터페이스 이름 {
	// 상수 
	// 추상 메소드 
	// 디폴트 메소드 
	// 정적 메소드 
	// private 메소드 
	// private 정적 메소드 	
}

구현 클래스 
public class 구현 클래스 이름 implements 인터페이스 이름 {
	// 인터페이스에 선언된 추상 메소드의 실체 메소드 선언 
}

사용방법 
인터페이스 변수;
변수 = 구현객체;
ex> RemoteControl rc;
rc = new Televison();
인터페이스 변수 = 구현객체;
ex> RemoteControl rc = new Televison();

다형성 
자동타입변환, 강제타입변환 
Vehicle vehicle = new Bus(); ---> 자동타입변환 
Bus bus = (Bus) vehicle; ---> 강제타입변환 (인터페이스에 자동변환된 객체를 다시 되돌림)

객체타입확인 
객체 instanceof Bus --- true, false


중첩 선언과 중첩 객체 

클래스는 긴밀한 관계를 가진 클래스와 인터페이스를 내부에 선언할 수 있다 

중첩클래스 : 클래스 내부에 선언한 클래스 ---> 바깥 클래스와 긴밀한 관계를 가짐
- 멤버클래스 : 인스턴스 멤버 클래스, 정적 멤버 클래스
- 로컬클래스 : 생성자 또는 메소드 내에서 선언된 클래스 
중첩인터페이스 : 클래스 내부에 선언한 인터페이스 

중첩 인터페이스 : 클래스의 멤버로 선언된 인터페이스
해당 클래스와 긴밀한 관계를 맺는 구현 클래스를 만들기 위함 
인스턴스 멤버 인터페이스와 정적 멤버 인터페이스 모드 가능함 


익명객체 - 이름이 없는 객체 
명시적으로 클래스를 선언하지 않기 때문에 쉽게 객체 생성 가능 

- 클래스를 상속하거나 인터페이스를 구현해야만 생성 가능함 
1. 클래스를 상속해서 만들 경우 ---> 익명 자식 객체 
2. 인터페이스를 구현해서 만들 경우 ---> 익명 구현 객체 

new 인터페이스() {
	// 필드
	// 메소드
}
	
Tire tire1 = new Tire() {
	roll() {
		sysout("바퀴가 굴러갑니다.");
	}
}
tire1.roll(); 



class Tire {
	roll() {
		sysout("바퀴가 굴러갑니다.");
	}

}

class KumhoTire extends Tire {
	roll() {
		sysout("금호 바퀴가  굴러갑니다.");
	}

}
profile
신입 개발자의 배웠던 것을 복습하기 위한 블로그입니다.

0개의 댓글