코딩
자바 인터페이스와 다형성
특정한 인터페이스를 구현하고 있는 클래스가 있을 때 이 클래스의 데이터 타입으로 인터페이스를 지정가능 위의 코드를 통해서 알 수 있는 것은 클래스 C의 데이터 타입으로 인터페이스 I가 될 수 있다는 점이다. 이것은 다중 상속이 지원되는 인터페이스의 특징과 결합해서 상속과는 다른 양상의 효과를 만들어낸다. 클래스가 가지고 있는 모든 기능을 사용해야 된다면 D처럼 데이터 타입을 D로 지정 해 인스턴스화 클래스의 여러가지 기능중에서 특정한 인터페이스의 기능만 사용한다고 한다면 타입을 인터페이스명으로 하면 그 기능에만 집중할 수 있도록 할 수 있다. 비유 사람은 다면적인 존재다 steve라는 사람은 집에서 아버지이고 직업적으로는 프로그래머 또 종교단체 내에서는 신도가 될 수 있다. 하나의 사람이지만 누구와 관계..
자바 클래스와 다형성
이상하게 보이겠지만 클래스B의 데이터 형이 클래스A이다. 클래스 B는 클래스A를 상속하고 있다. 이런 경우에 클래스B는 클래스A를 데이터 형으로 삼을 수 있다. 그리고 어떠한 클래스를 인스턴스화 시킬 때 담는 변수의 데이터 타잎은 B클래스가 될 수도 있고 B 클래스의 부모 클래스인 a가 될 수도 있다. 이 코드는 실행이 되지 않는다. obj인 인스턴스가 마치 부모클래스인 A처럼 동작한다. 그래서 obj인스턴스의 메소드y 실행이 되지 않는다. A obj = new B();는 클래스 A에 정의 되어있는 메소드들만 실행 클래스 B에서 추가적으로 정의한 메소드는 실행x 하지만 클래스 B의 있는 메소드가 상위 클래스에 있는 메소드를 오버라이딩 했다면 실행 가능하다. 1.클래스 B의 데이터 타입을 클래스 A로 인스..
자바 interface
인터페이스를 abstract, final와 함께 대표적인 규제이다. 어떤 객체가 있고 그 객체가 특정한 인터페이스를 사용한다면 그 객체는 반드시 인터페이스의 메소드들을 구현해야 한다. 만약 인터페이스에서 강제하고 있는 메소드를 구현하지 않으면 이 에플리케이션은 컴파일 조차 되지 않는다. 계산기 기능이 필요한 프로젝트를 진행하는데 시간이 촉박하다. 그래서 계산기 클래스는 개발자 A가 만들고, 개발자 B는 그 클래스를 사용하는 로직을 만들다고 해보자. 이런 경우 개발자 B는 개발자 A가 계산기를 잘 만들어서 나중에 제출할 것이라고 기대하고 개발을 진행할 것이다. 그리고 아래와 같이 가짜 로직을 만들어서 코드를 작성했다. 개발자 A가 Calculator를 만드는데 3개월이 필요하다고 한다면 그 시간을 단축하기..