자바/강의
-
[Intellij] Annotation이 인식되지 않는 Module JDK is not defined 오류 with Gradle자바/강의 2025. 5. 20. 23:01
오랜만에 Spring Boot를 생성하고 Intellij IDE를 통해 실행하려 하였으나, Module JDK is not defined 라는 오류와 함께 Application이 실행되지 않는 상황에 직면했다. 처음 Intellij를 사용할 때, 나를 힘들게 했던 설정 오류 중 하나이다. 이제 순서대로 짐작가는 곳을 찾아보자. 가장 먼저 살펴볼 곳은 역시 Project Setting이다. 🚩1. Project Settings 단축키로는 Ctrl+Alt+Shift+s를 눌러주면 바로 이동하며, 마우스로는 File > Project Structure를 눌러 이동할 수 있다. 하지만 Project의 SDK는 잘 설정되어 있는 것이 확인되었다. 그렇다면 가장 의심가는 곳은 Grdle 설정이다. 🚩2..
-
[Java] 제한자자바/강의 2023. 10. 30. 21:31
| 제한자 메서드나 객체 등을 생성할 때 선언부에서 사용되어 이용에 제한을 주는 기능으로 자주 사용하는 제한자를 살펴보도록 하겠습니다. | 접근 제한자 객체, 메서드 등에 사용되며 외부에서 사용을 제한하는 기능으로 public, protected, package, private 네 가지 접근 제한자가 있습니다. 접근 제한자를 별도로 설정하지 않는 다면 package가 dafault로 설정됩니다. private이 가장 접근이 제한되며 아래와 같이 접근이 허용 됩니다. 동일 클래스 동일 패키지 다른 패키지의 상속 전체 private O package O O protected O O O public O O O O 접근 제한자 외에도 자주 사용되는 제한자들이 있어 소개하며 제한다 포스팅은 마무리 하도록 하겠습니..
-
[Java] 오버라이딩자바/강의 2023. 10. 24. 22:07
| 오버라이딩(overriding) 상속 받은 클래스에서 정의된 메서드를 적절하게 수정하는 것을 오버라이딩이라 합니다. 오버로딩이랑 헷갈리기 쉬우나 오버로딩은 동일한 메서드명으로 파라미터의 개수, 순서, 타입 등을 다르게 바꾸어 여러 개의 메서드를 만드는 것이며, 오버라이딩은 상속 받은 메서드를 자식 클래스에 적합하게 수정하는 것으로 전혀 다른 동작을 합니다. | 조건 오버라이딩은 메서드 이름이 동일하고 파라미터가 달라야한다는 두 가지 조건이 있었습니다. 오버로딩은 오버라이딩보다 조건이 많으며 아래 다섯 가지 조건이 있습니다. 메서드 이름이 동일 리턴 타입이 동일 파라미터의 개수, 타입, 순서가 동일 조상클래스보다 큰 예외를 처리할 수 없다 조상클래스보다 같거나 넓은 접근 제한자를 가져야한다 Static..
-
[Java] 상속자바/강의 2023. 10. 16. 01:01
| 상속 Java에서는 한 번 만든 클래스를 재사용하기 위해 클래스에서 클래스로 상속할 수 있습니다. 상속을 받은 클래스가 하위 클래스, 상속을 해준 클래스가 상위 클래스로 구분됩니다. 아직 상속이 어떤 것인지 와닿지 않을 수 있으나 클래스를 상속하는 이유를 먼저 본 다음 상속 예제를 살펴보도록 하겠습니다. | 상속을 사용하는 이유 여러 개의 클래스가 동일한 특성을 가진 경우 하나의 상위 클래스를 만들고 각각의 하위 클래스들이 해당 클래스를 상속 받으면 중복되는 코드를 여러 번 작성하지 않아도 됩니다. 1번의 확장으로 공통된 사항이 삭제 or 추가되는 경우에 유지 보수성을 높일 수 있습니다. | 상속의 특징 상위 클래스의 멤버만 하위 클래스에 상속됩니다. 멤버: 변수 or 메서드 상위 클래스의 초기화 블..
-
[Java] 생성자자바/강의 2023. 10. 11. 23:14
| 생성자 생성자란 객체를 초기화 및 할당 해주기 위해 호출하는 클래스 메서드라고 할 수 있습니다. 생성하고자 하는 객체의 클래스를 불러오는 작업입니다. 아래와 같이 Employee라는 타입의 객체(employee1)를 생성할 때, new 뒤에 오는 Employee()를 생성자라 합니다. Employee employee1 = new Employee(); 이러한 생성자를 통해 객체를 생성할 수 있습니다. 생성자는 기본 생성자와 파라미터 생성자 두 가지로 구분되며, 아래의 구조에 따라서 작성됩니다. public Employee{ //클래스를 구성하는 멤버 변수 String id; string name; string depart; //생성자의 구조 /*선언부*/ //제한자 클래스_이름(파라미터) /*구현부*/..
-
[Java] 의존관계역전자바/강의 2023. 9. 12. 23:28
자바에서 의존이란 의미는 클래스1 객체가 어떤 일을 수행하기 위해서 클래스2가 반드시 필요한 경우를 클래스1은 클래스2에 의존한다. 합니다. 예를 들어 이자바솔루션의 대표인 이자바는 직원들에게 법인 차를 제공해 Car와 Employee 클래스는 다음과 같이 구성되어 있습니다. public class Car { public String getInfo() { return "차"; } } public class Employee { private Car car; public Employee() { car = new Car(); } public void commute() { System.out.print(car.getInfo()+"을 이용해 출퇴근 합니다."); } } 이자바는 신입사원이 들어와 법인 차를 제공하..
-
[Java] 오버로딩자바/강의 2023. 8. 15. 21:33
pubilc static void main(String[] args) 이 자바를 사용하면서 수도없이 많이 보게되는 이 문장에서 main은 하나의 메서드이며, 입력값(파라미터)으로 String[] args(입력되는 변수의 개수가 정해지지 않았다는 의미)를 입력받는 역할을 합니다. 이처럼 메서드에 파라미터는 정해진 형태의 자료만 들어올 수 있습니다. 그렇다면 주로 사용하는 print함수는 입력되는 파라미터 변수의 타입과 상관없이 입력되는건 왜그런가? 라는 생각을 하실 수 있습니다. | 파라미터 변수의 타입이 다양하게 입력되는 print 함수 public class test{ public static void main(String[] args) { System.out.print("123"); System.ou..
-
[Java] 변수자바/강의 2023. 8. 15. 20:57
메모리 구조를 배우기 전에 변수는 기본형 타입, 참조형 타입 두 가지로 구분할 수 있었습니다. 하지만 이제 메모리 구조를 알기에 변수가 메모리에 저장되는(정확히는 선언 위치에 따라서 분류) 위치에 따라서 변수를 구분할 수 있습니다. | 멤버 변수, 지역 변수 멤버 변수: 클래스 영역에 선언된 변수, 클래스 멤버 변수와 인스턴스 멤버 변수로 구분됩니다. 지역 변수: 메서드 영역에 선언된 변수, 지역 변수와 파라미터 변수로 구분됩니다. 그렇다면 클래스 영역과 메서드 영역은 어떻게 구분하며, 각 변수들의 세부적인 변수의 구분은 어떻게 하는 걸까요? | 실제 코드에서의 영역 구분 멤버 변수 클래스 멤버 변수: 클래스 영역에 선언된 static 변수(metaspace 메모리에 저장되어 인스턴스 멤버와 구분됩니다)..