분류 전체보기

    자바 클래스와 다형성

    이상하게 보이겠지만 클래스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개월이 필요하다고 한다면 그 시간을 단축하기..

    자바 abstract

    클래스에 하나라도 abstract(추상)메소드가 있으면 클래스는 자동으로 추상 클래스가 된다. abstract라는 것이 상속을 강제하는 일종의 규제라고 생각하자. 즉 abstract 클래스나 메소드를 사용하기 위해서는 반드시 상속해서 사용하도록 강제하는 것이 abstract다. 추상 클래스는 상속을 강제하기 위한 것이다. 즉 부모 클래스에는 메소드의 시그니처만 정의해놓고 그 메소드의 실제 동작 방법은 이 메소드를 상속 받은 자식 클래스의 책임으로 위임하고 있다. + final abstract는 상속을 강제하도록 하는 규제면 final abstract와는 반대되는 의미 상속을 금지 한번 셋팅된 값 변경도 불가 오버라이딩 불가