본문 바로가기

JAVA/기초 문법

Interface 인터페이스

  abstract class : 일반 method + abstract method + variable
  JAVA는 다중상속이 불가능(부모는 1개)
 
  interface : abstract method(추상메서드로만 이루어짐->변수,일반메서드 불가능// 선언만되어있는 요소)
  다중 상속이 가능하다.
  설계의 사양을 빠르게 파악 할 수 있는 장점이 있다.
  확장성, 관리의 목적을 가지고 있다.

 

** MyInterface 메서드() 호출 시

MyClass 메서드로 호출되는데 이는, 

부모 인터페이스로 각각의 인터페이스로 잡아 줄 수 있기 때문

 

**minter.func( );는 에러가 나므로

앞에 func()를 보유 한 YouInterface로 형변환 후 실행하면 

HeClass func()가 나온다

 

MyClass

public class MyClass implements MyInterface{

	@Override
	public void method() {
		System.out.println("MyClass method()");
	}
}

MyInterface

public interface MyInterface {

	//private int number;-> 에러남. 변수사용 불가
	//public void name() {}-> 에러남. 일반메소드 사용불가
	public void method();//MyClass 메서드 호출
}

YouClass

public class YouClass implements MyInterface {

	@Override
	public void method() {
		System.out.println("YouClass method()");
	}
}

YouInterface

public interface YouInterface {
	public void func();
}

HeClass

public class HeClass implements MyInterface, YouInterface {

	@Override
	public void func() {
		System.out.println("HeClass func()");
	}
	@Override
	public void method() {
		System.out.println("HeClass method()");
	}
	public void heMethod() {
		System.out.println("HeClass heMethod()");
	}
}

 

Main

public class mainClass {

	public static void main(String[] args) {

		//MyInterface myinter = new MyInterface();->에러남.
		
		MyClass mycls = new MyClass();
		mycls.method();//->MyClass method()
		
		YouClass youcls = new YouClass();
		youcls.method();//->YouClass method()
		
		MyInterface myInter = new MyClass();
		myInter.method();//->MyClass method()
		
		MyInterface youInter = new YouClass();
		youInter.method();//->YouClass method()
		//부모 인터페이스로 각각의 인터페이스로 잡아 줄 수 있다
		
		HeClass hcls = new HeClass();//모두 접근 가능쓰
		hcls.method();//->HeClass method()
		hcls.func();//->HeClass func()
		hcls.heMethod();//->HeClass heMethod()
		
		//상속받은 클래스의 인터페이스 생성
		MyInterface minter = new HeClass();
		minter.method();//->HeClass heMethod()
		//HeClass를 상속받아 HeClass의 method()호출
		
		//minter.func();->에러.
		((YouInterface)minter).func();//형변환
		//MyInterface에 func()이 없으므로, YouInterface로 형변환 후 minter로 호출.
		//->HeClass func()
	}
}

'JAVA > 기초 문법' 카테고리의 다른 글

접근제한자 정리  (0) 2020.06.11
추상클래스  (0) 2020.06.09
그냥 알아두면 좋은 개념  (0) 2020.06.05
...num  (0) 2020.05.28
function 배열 할당  (0) 2020.05.27