자바 인터페이스 필드 재선언

자바 인터페이스 필드 재선언

작성일 2024.01.14댓글 1건
    게시물 수정 , 삭제는 로그인 필요

인터페이스에 선언했던 상수 필드를 구현 클래스에서 재선언한 경우 인터페이스의 해당 상수 필드는 아예 사용이 불가한가요? 일단 일반적인 자식클래스에서 필드하이딩된 부모 클래스의 필드를 쓸때 super를 사용하는 것처럼 " super.필드명 " 했을땐 안되는 것 같아요






#자바 인터페이스 #자바 인터페이스 사용 이유 #자바 인터페이스 상속 #자바 인터페이스 예제 #자바 인터페이스 추상클래스 #자바 인터페이스 구현 #자바 인터페이스 변수 #자바 인터페이스 다중상속 #자바 인터페이스 다형성 #자바 인터페이스 생성자

profile_image 익명 작성일 -

Human 인터페이스의 sugarSpoon 이 인스턴스 변수로 보이실지 모르지만 ...

인스턴스 변수가 아니구요 인터페이스에는 인스턴스 변수가 선언이 안됩니다.

따라서 인터페이스에 선언한 변수는 무조건 public static final 이 선언 된거로 항시 지정사항이다 보니 생략되어 있는 겁니다. 따라서 원래 상태는 public static final int sugarSpoon = 100; 입니다.

final 붙으면 알죠 재정의같은게 안되고 값 수정도 안됩니다.

super 와 this 키워드의 의미는 상속하는 부모클래스의 인스턴스를 가리키는 super,

본인 자신 클래스의 인스턴스를 가리키는 this 입니다.

그러니 인터페이스를 super 로 가리킬수 없어요. 인터페이스는 인터페이스 생성이 안됩니다.

그리고 인터페이스는 상속(extends)이 아닌 구현(implements)으로 하는 겁니다.

Human을 구현한 Dog 클래스에서 sugarSpoon 필드를 선언해도 Human의 sugarSpoon 의 상수하고는 별개입니다. 하이딩 , 쉐이딩 그런 것도 아닙니다.

Human의 sugarSpoon은 public static final 이 생략된 거라 답변했듯이 접근하려면 static 접근방식 처럼

Human.sugarSpoon 으로 접근하면 됩니다. 부모클래스의 인스턴스를 가리키는 super.sugarSpoon 아닙니다.

상속과 구현이란 개념을 좀 더 다시 알아보시고요.

static 멤버는 상속이 안된다는 거.

재정의이나 하이딩 같은거는 인스턴스 멤버 사이에서 이뤄지는 거라는 거.

인터페이스는 자체 인스턴스 생성이 안된다는 거, super 키워드로 설명이 안됩니다.

인터페이스의 상속은 인터페이스 끼리 이뤄지고 인터페이스 상속은 다중 상속이 된다는거..

다시 OOP 개념을 보시면 됩니다.