• Home
  • About
    • Junseok photo

      Junseok

      개발자 블로그

    • Learn More
    • Facebook
    • Instagram
    • Github
  • Posts
    • All Posts
    • All Tags
  • Java
    • java-basic
    • java-solid
    • java-pattern
    • java-logging
  • Javascript
  • Angular
  • spring
    • spring-framework
    • spring-boot
    • spring-test
  • server
    • jeus
    • webtob
    • tomcat
  • test
    • junit
    • assertj
    • hamcrest
    • dbunit
    • spring
  • docker
  • unix
  • maven
  • db
  • network
  • eclipse
  • intellij
  • microservices
  • etc

Concrete Class

10 Sep 2019

Reading time ~1 minute

Java에서 이야기 하는 Concrete Class 란 무엇인가?

난 Concrete class 를 구현 클래스, 구상 클래스, 구체 클래스 등과 같은 말로 굳이 표현하고 싶지 않다.

Java를 자바라고 하듯이 Concrete Class 도 컨크리트 클래스라 부르겠다.

Concrete class는 new keyword를 사용해서 인스턴스화 될 수 있어야 한다.

class의 멤버인 모든 메서드가 구현되어 있어야 한다.

아래 추상클래스는 new keyword로 인스턴스화 할 수 없다.
또한 모든 메서드가 구현되지 않았다.
그러므로 Concrete class가 아니다.

abstract class Car {
  public void run() {
		System.out.println("달린다.");
	}

  public abstract void openDoor();
}

아래는 interface 이다. interface에는 구현부가 존재하지 않는다. java8 이후 부터는 기본 구현부가 존재하게 되었지만 interface 또한 new keyword로 인스턴스화 할 수 없다.
그러므로 Concrete class가 아니다.


interface Gear {
	public void drive();
	public void parking();
}

아래는 추상클래스를 상속받고 인터페이스를 구현한 클래스이다.
모든 메서드가 구현되었고 new keyword 로 인스턴스화 할 수 있다.
그러므로 Concrete class 이다.


class Tico extends Car implements Gear {

  @Override
  public void openDoor() {
		System.out.println("티코 문여는 중");
	}

  @Override
	public void drive() {
		System.out.println("드라이브 모드");
	}

  @Override
	public void parking() {
		System.out.println("주차 모드");
	}

}

아래 Car 클래스 추상클래스를 상속받지도 않았고 인터페이스를 구현하지도 않았지만
메서드가 모두 구현되어 있다. 그러므로 Concrete Class 이다.

class Car {
	void run() {
		System.out.println("달린다.");
	}
}


Concrete Share Tweet +1