본문 바로가기

Java

(13)
[Java] 이것이 자바다 - 인터페이스 인터페이스란? 인터페이스는 보통 추상클래스와 많이 비교하는데 추상 클래스가 그 추상 클래스를 상속 받아서 추상 클래스에서 선언된 변수나 메소드를 실체 클래스에서 사용하고 확장시키는데 의의가 있다면 인터페이스는 인터페이스에서 선언한 추상 메소드를 자식클래스에서 구현을 강제함으로써 같은 동작을 보장하는데 의의가 있다. 만약 인터페이스에서 선언한 추상메소드를 구현 클래스에서 오버라이드 하지 않으면 컴파일 에러가 발생한다. 또한 인터페이스는 추상클래스와 달리 다중 상속이 가능하다. 인터페이스 구성 상수 필드(Constant Field) 인터페이스도 상수 필드 선언이 가능한데 이 상수는 인터페이스에 고정된 값으로 수정될 수 없다. 그러므로 상수를 선언할 때는 반드시 초기값을 대입해야 한다. 추상 메소드(Abstr..
[Java] 이것이 자바다 - 추상 클래스 추상클래스란? 객체를 직접 생성할 수 있는 클래스를 실체 클래스라고 한다면 이 클래스들의 공통적인 특성을 추출해서 선언한 클래스를 추상 클래스라고 한다. 즉 추상클래스는 실체 클래스와 상속의 관계를 가지고 있으며 추상클래스가 부모이고 실체 클래스가 자식으로 구현되어 실체클래스가 추상클래스의 특성을 물려받아 추가적인 특성을 가질수 있게 된다. 그리고 추상 클래스는 단일 상속만 가능하다. 추상클래스를 사용하는 이유는 두가지가 있다. 1. 실체 클래스들의 공통된 필드와 메소드의 이름을 통일할 목적 실체 클래스를 설계하는 사람이 여러 사람일 경우 같은 기능을 가진 메소드를 구현하면서도 메소드 이름을 다르게 설정하여 객체마다 사용 방법이 달리질 수 있다. 이를 방지 하기 위하여 추상클래스에 메소드를 구현하고 추상..
[Java] 이것이 자바다 - 객체 지향 프로그래밍 객체 지향 프로그래밍이란? 현실 세계에서 어떤 제품을 만들 때 부품을 먼저 개발하고 이 부품들을 하나씩 조립해서 완성된 제품을 만들 듯이 소프트웨어를 개발할 때도 부품에 해당하는 객체를 만들고 이 객체를 하나씩 조립해서 완성된 프로그램을 만드는 기법을 객체 지향 프로그래밍(OOP: Object Oriented Programming)이라고 한다. 즉 객체 지향 프로그래밍은 프로그래밍에서 필요한 데이터를 추상화시켜 속성과 행위를 가진 객체를 만들고 그 객체들 간의 유기적인 상호작용을 통해 로직을 구성하는 프로그래밍 방법이다. 객체 지향 프로그래밍의 장점 1. 유지보수성이 좋다. - 연관된 클래스만 코드를 변경하면 된다. 절차지향에 비해, 유지보수하기 편리하다. 2. 재사용성이 좋음 - 만들어 둔 객체를 다른..
[Java] 이것이 자바다 - JVM JVM 이란? 운영체제는 자바 프로그램을 바로 실행할 수 없는데 그 이유는 자바 프로그램은 완전한 기계어가 아닌 중간단계의 바이트 코드이기 때문에 이것을 해석하고 실행할 수 있는 가상의 운영체제가 필요하다. 이때 사용되는 것이 자바 가상 기계 JVM(Java Virtual Machine)이다. 바이트 코드는 모든 JVM에 동일한 실행 결과를 보장하지만 JVM은 운영체제에 종속적이다. 그래서 JVM은 운영체제에 맞게 설치 되어야 하는데 JDK(Java Development Kit)나 JRE(Java Runtime Envirenment)를 설치할때 자동으로 설치되며 JDK와 JRE가 운영체제에 맞게 제공된다. JVM이 시작되면 JVM은 운영체제에서 할당받은 메모리 영역(Runtime Data Area)을 다..
[Java] CSV 파일 데이터 불러오기 과제 수행 중 데이터를 입력하는 과정에서 다음과 같이 하드코딩으로 데이터를 입력했다. @Component @Order(1) public class TestDataRunner implements ApplicationRunner { @Autowired ProductRepository productRepository; @Override public void run(ApplicationArguments args) throws Exception { Product product1 = createProduct((long) 768848, "[STANLEY] GO CERAMIVAC 진공 텀블러/보틀 3종", 21000, 45); Product product2 = createProduct((long) 748943, "디오..