클래스 test1 에
public void test()
{
System.out.print(test1입니다)
}
인터페이스 test2 에
public void test();
가 있다고치자
그래서
public class sibal extends test1 impliments test2
라는 sibal 클래스에서
test() 메소드를 어떻게 다루고 어떻게 되는거냐
--
무조건 인터페이스 test2의 test메소드를 구체화시켜야하기때문에
test 메소드를 구체화시켜서
test1 클래스의 test메소드는 씹어먹고
test2인터페이스의 test 를 사용??
인터페이스는 "이 인터페이스를 implements 하는 클래스에는 파라미터가 이러이러하고 반환 타입은 이러하며 이름이 xxxxx 인 메소드의 구현이 있어야 한다"는 뜻임. 그 구현을 지가 직접 정의하든 부모 클래스한테서 받아오든 그건 알바 아님. 파라미터+반환타입+메소드이름이 일치하는 구현만 있으면 됨.
Test1 클래스의 test()메소드와 Test2 인터페이스의 test()메소드는 우연히 이름과 반환 타입과 파라미터 타입이 같은 것에 불과하기때문에 "Test1클래스에서 test메소드를 구체화시켰는데"라고 말하면 안됨.
Sibal 클래스 입장에서 보면 test() 메소드 구현이 있어야 하는데 우연히 그 구현이 상위 클래스에 있는 것일뿐. Test1.test()와 Test2.test()는 피 한방울 안섞인 남남이고 동명2인에 불과함. Aibal클래스 때문에 엮인것처럼 보일 뿐이라는거.