본문 바로가기
반응형

전체 글346

[JAVA] 객체지향 - 다형성(Polymorphism) 다형성(Polymorphism)이란? 단어의 형태소를 분석해보면 poly(많은), morphs(형태)라는 뜻이다. 즉, 형태가 다양하다는 의미다. 위키피디아에서는 다형성을 다음과 같이 정의한다. 프로그래밍 언어의 자료형 체계의 성질을 나타내는 것으로, 프로그램 언어의 각 요소(상수, 변수, 식 , 오브젝트, 함수 등)들이 다양한 자료형(type)에 속하는 것이 허가되는 성질 자바에서 다형성은 대표적으로 두 가지 유형으로 나눌 수 있다. 1. 컴파일 타입 다형성 2. 런타임 타입 다형성 컴파일 타입 다형성 - 오버로딩 같은 이름의 메소드를 매개 변수의 개수 또는 타입을 변경하여 여러 개 사용 예시코드 class Animal{ public void move(){ System.out.println("동물이 움.. 2021. 8. 13.
[Java] 자바 상속의 특징 - extends, super, 오버라이딩, instanceof, 추상 클래스와 메소드, final 상속이란? 상속은 부모가 자식에게 물려주는 행위다. 객체 지향 프로그램에서도 부모(상위) 클래스의 멤버를 자식(하위) 클래스에 물려주어 자식 클래스가 갖고 있는 것처럼 사용할 수 있다. 상속의 장점 - 코드 중복 감소(이미 잘 개발된 클래스를 재사용해서 새로운 클래스를 만드므로) - 유지 보수 시간 감소(부모 클래스의 수정으로 모든 자식 클래스들의 수정 효과를 가져오기 때문에 ) 자바에서 상속을 구현하는 방법 : 자바의 extends 예약어 class 자식클래스 extends 부모클래스{ } 아래는 Computer 클래스와 이를 상속하는 Mac 클래스 코드다. public class Computer { int price; public void setPrice(int price){ this.price = .. 2021. 8. 12.
[Java] 접근 제한자(제어자) - public, protected, default, private [java] 접근 제한자 (제어자)- public, protected, default, private 클래스를 설계할 때 외부 클래스에서 접근할 수 있는 멤버와 접근할 수 없는 멤버로 구분해서 필드, 생성자, 메소드를 설계하는 것이 바람직하다. 그 이유로 다음과 같은 상황이 있을 수 있기 때문이다. 1. 특정 객체 생성을 막기 위한 생성자 호출 제한 2. 객체의 특정 데이터를 보호하기 위한 필드에 접근 제한 3. 특정 메소드 호출을 막기 위해 접근 제한자의 종류: public, protected, default(package-private), private ✅ public: 누구나 접근 public class Main(){ } ✅ protected: 같은 패키지 or 상속받은 경우 접근 protected.. 2021. 8. 12.
[Java] 자바의 패키지란? - package, import, 클래스패스, -classpath 옵션, CLASSPATH 환경변수, 접근지시자 package 키워드 package: - 클래스를 체계적으로 관리하기 위한 도구 / 클래스들을 구분 짓는 폴더 - 패키지의 물리적인 형태는 파일 시스템의 폴더 - 단순히 파일 시스템의 폴더 기능만 하는 것이 아니라 클래스의 일부분 - 클래스를 유일하게 만들어주는 식별자 클래스 이름이 동일해도 패키지가 다르면 다른 클래스로 인식한다. 또한 패키지 내부에 패키지를 둘 수도 있다. ' - 패키지와 클래스는 도트(.)를 사용해서 표시 상위패키지.하위패키지.클래스 패키지를 나타내는 코드 package week7.하위패키지; public class ClassName { } 패키지 이름 규칙 1. 숫자로 시작하거나, ‘_’ 과 ‘$’를 제외한 특수 문자를 사용 금지 2. java로 시작하는 패키지 금지(자바 표준 A.. 2021. 8. 12.
[JUnit] 오류 해결: java.lang.IllegalStateException: Failed to load ApplicationContext java.lang.IllegalStateException: Failed to load ApplicationContext JUnit으로 스프링 프로젝트를 테스트 하던 중 위와 같은 오류가 발생했다. 이러한 경우 테스트 클래스에 @WebAppConfiguration 어노테이션을 붙이면 해결할 수 있다. @WebAppConfiguration은 클래스 레벨 어노테이션이며, 스프링 프레임워크에서 웹 버전의 애플리케이션 컨텍스트(빈의 생성과 관계설정 등 제어를 담당하는IoC 컨테이너)를 생성할 때 사용한다. 출처 https://www.baeldung.com/spring-webappconfiguration 2021. 8. 10.
[Spring] The dependencies of some of the beans in the application context form a cycle 양방향 의존관계 오류 The dependencies of some of the beans in the application context form a cycle 양방향 의존관계 오류 스프링 프레임워크에서는 @Autowire 어노테이션을 이용해서 의존성 주입을 한다. 그런데 서로 다른 두 개의 클래스에서 서로를 의존성 주입하면 위와 같이 양방향 의존관계 오류가 발생한다. 위 이미지에서는 userService, reservationService 클래스가 서로를 의존성 주입하고 있어 오류가 발생했다. 이는 A를 변경하면 B가 영향을 받고, B를 변경하면 A가 영향을 받으므로 나쁜 설계라고 할 수 있다. 이를 해결하기 위해 A>B, B>A 의존 관계가 있다면 새로운 C를 만들어서 A>B>C로 의존관계를 갖도록 변경하여 문제를 해결 .. 2021. 8. 9.
반응형