Back-End (Web)/JAVA 28

[JAVA] 클래스 간의 관계와 상속

상속📌 상속의 사전적 정의는 부모가 자식에게 물려주는 행위를 말합니다.객체 지향 프로그램에서도 부모 클래스의 필드와 메서드를 자식 클래스에게 물려줄 수 있습니다.상속을 사용하면 적은 양의 코드로 새로운 클래스를 작성할 수도 있고 공통적인 코드를 관리하여 코드의 추가와 변경이 쉬워질 수도 있습니다.이러한 특성 때문에 상속을 사용하면 코드의 중복이 제거되고 재사용성이 크게 증가하여 생산성과 유지 보수성에 매우 유리해집니다. = 자바 객체 지향의 중요한 기능 중 하나로, 한번 변수나 메서드 선언하고 그걸 다른 이들이 빌려쓰는 형태로 만들어, 매번 변수, 메서드를 반복해서 선언하는 것을 방지한 방식이다.  위의 그림처럼 개발자, 댄서, 가수 모두 인간의 특징인 이름,나이,학습,일등의 특징을 가질 수 밖에 없다..

Back-End (Web)/JAVA 2024.11.12

[JAVA] package와 import

package📌 패키지(Package)는 Java에서 클래스를 그룹으로 묶어 관리하는 폴더 같은 개념이다. 관련된 클래스들을 함께 묶어서 하나의 패키지로 정의함으로써 코드의 구조를 더 체계적이고 조직적으로 유지할 수 있다.  패키지의 장점코드의 논리적 그룹화: 비슷한 기능이나 역할을 하는 클래스들을 하나의 패키지에 넣어 관리할 수 있습니다.네임스페이스 제공: 서로 다른 패키지에 같은 이름의 클래스가 있어도 충돌이 발생하지 않습니다.접근 제어 강화: 특정 클래스나 멤버가 패키지 내에서만 접근 가능하게 하여 클래스 간의 의존성을 조절할 수 있습니다.패키지 선언패키지는 package 키워드를 통해 클래스 파일의 최상단에 선언하며, 선언된 패키지 경로는 실제 파일 경로와 일치해야 합니다.패키지는 상위 패키지와..

Back-End (Web)/JAVA 2024.11.12

[JAVA] 접근 제어자

접근 제어자클래스, 메서드, 변수 등의 접근 범위를 제한하는 키워드로, 외부에서 사용할 수 있는지 여부를 결정한다클래스, 맴버 변수, 메서드 생성자에 사용되고, 지정되어 있지 않으면 default로 지정된다.1. public범위: 모든 클래스에서 접근 가능.사용처: 클래스, 메서드, 필드.설명: public으로 선언된 요소는 모든 클래스에서 접근할 수 있습니다. 프로젝트 내 어디서든지 사용 가능한 공개 멤버로 설정됩니다.2. protected범위: 같은 패키지 내의 클래스나 자식 클래스에서 접근 가능.사용처: 메서드, 필드 (클래스에는 사용할 수 없음).설명: protected는 동일 패키지 내의 모든 클래스와 다른 패키지의 자식 클래스에서 접근할 수 있도록 허용합니다.3. default (아무 접근 제..

Back-End (Web)/JAVA 2024.11.12

[JAVA] This와 This()

This this는 객체 즉, 인스턴스 자신을 표현하는 키워드다. 이게 무슨 말인가 싶을건데, 아래의 예시를 보면 이해가 쉽다 만약 이처럼 생성자를 선언하는데 매개변수명(생성자의 지역변수)과 객체의 필드명(클래스의 맴버변수)이 동일할 경우 오류가 발생하지는 않지만 생성자 블록 내부에서 해당 변수들은 객체의 필드가 아닌 가장 가까운 매개변수명을 가리키게 됨으로 자기 자신에게 값을 대입하는 상황이 되어 버린다.this 키워드를 통해 변수명에 해당하는 객체의 필드에 접근하여 받아온 매개변수의 매개값을 객체의 필드에 대입하여 저장할 수 있다. Car returnInstance() { return this;}또한 this는 인스턴스 자신을 뜻하기 때문에 객체의 메서드에서 리턴 타입이 인스턴스 자신의 클래스 ..

Back-End (Web)/JAVA 2024.11.12

[JAVA] 생성자

생성자public Car() {} // 선언...Car car = new Car(); // 호출생성자는 객체가 생성될 때 호출되며 객체를 초기화하는 역할을 수행합니다.생성자는 반환 타입이 없고 이름은 클래스의 이름과 동일합니다.new 연산자에 의해 객체가 생성되면서 Car(); 즉, 생성자가 호출됩니다.위와 같이 ()만 존재하는 경우를 기본 생성자라한다. 만약 생성자를 하나도 생성하지 않으면 컴파일러가 자동으로 기본 생성자를 자동으로 추가한다.public class Car { public Car(String model) {} // 생성자 선언 // 생성자가 한개 이상 선언되었기 때문에 기본 생성자를 추가하지 않음.}즉 이 경우는 컴파일러는 기본 생성자를 생성하지 않음 (public Car가 선언되어 ..

Back-End (Web)/JAVA 2024.11.12

[JAVA] 인스턴스 멤버와 클래스 멤버

public class Car { // 인스턴스 멤버 (각 객체마다 고유) String company; // 자동차 회사 String model; // 자동차 모델 String color; // 자동차 색상 double price; // 자동차 가격 double speed; // 자동차 속도, km/h 단위 char gear; // 기어 상태, P (주차), R (후진), N (중립), D (주행) boolean lights; // 자동차 조명 상태, 켜짐(true) 또는 꺼짐(false) // ★클래스 멤버 (모든 객체가 공유하는 값)★ static int carCount = 0; // 생성된 자동차 객체 수 // 기본 ..

Back-End (Web)/JAVA 2024.11.12

[JAVA] 객체의 필드와 메서드

필드 = 객체의 속성필드는 객체의 데이터를 저장하는 역할을 한다.객체의 필드는 크게 고유한 데이터, 상태 데이터, 객체 데이터로 분류할 수 있다.이처럼 자동차 객체는 4개의 고유한 데이터와 3개의 상태 데이터 그리고 3개의 객체 데이터를 가질 수 있다.우리가 처음 소프트웨어의 부품을 객체라 표현한다.이 3개의 객체 데이터를 자동차를 만들기 위한 부품 데이터라고 이해해도 좋다.public class Car { String company; // 자동차 회사 String model; // 자동차 모델 String color; // 자동차 색상 double price; // 자동차 가격 double speed; // 자동차 속도 , km/h char gear; // 기어의 상태..

Back-End (Web)/JAVA 2024.11.12

[JAVA] 클래스 설계와 객체 생성

클래스클래스 = 설계도 이다. 더 간단히 설명하면 붕어빵 틀이라고 생각하면된다.  클래스의 구성 요소필드(Field): 클래스의 속성을 나타내며, 객체가 가져야 할 데이터나 상태를 저장합니다. 필드는 변수와 유사하지만 클래스 내에 정의되어 객체의 상태를 나타내는 데 사용됩니다.메소드(Method): 클래스가 수행하는 행동이나 기능을 정의합니다. 객체가 수행할 수 있는 작업을 메소드로 정의하며, 필드를 조작하거나 특정 기능을 수행하는 역할을 합니다.생성자(Constructor): 객체를 생성할 때 호출되는 특별한 메소드로, 클래스 이름과 동일한 이름을 가집니다. 생성자를 통해 객체의 초기 상태를 설정할 수 있습니다.접근 제어자(Access Modifier): 클래스, 필드, 메소드에 접근할 수 있는 범위를..

Back-End (Web)/JAVA 2024.11.12

[JAVA] 객체지향 프로그래밍

객체지향객체지향은 자바에서 가장 중요한 기능 중 하나로 체계적인 프로그래밍을 가능하게 만들어준다. 사전적 의미로는, 현실 세계에서 어떠한 제품을 만들기 위해 부품들을 하나씩 조립해서 완성시키는 것처럼 소프트웨어 또한 필요한 부품들을 만들고 하나씩 조립해서 하나의 완성된 프로그램을 만들 수 있는데 이러한 기법을 ‘객체지향 프로그래밍’이라고 부른다. 단순히 말하면 기능, 혹은 데이터 별로 쪼개어 하나의 부품단위로 만들고 이를 잘 합쳐서 프로그램을 만든다 보면 된다. 객체객체란 세상에 존재하는 물체를 뜻하며 식별이 가능한 것을 말한다. 강하지, 반려동물, 자동차와 같이 물질적인 것 부터 개념적인 부분까지 식별이 가능하면 객체라 불릴 수 있다. 객체는 일정한 속성을 가지고 있으며 행동을 할 수 있다. 이처럼 현..

Back-End (Web)/JAVA 2024.11.12

[JAVA] 참조형 자료구조 정리(LIST / STACK / QUEUE / SET / MAP)

참조형 변수는 왜 쓸까?변수 선언에서 보통 참조형 변수가 사람의 머리를 가장 잘 쪼개주는데, 그냥 상자에 물건을 담는게 아니라 물건을 HEAP이라는 상자에 담고 STACK에는 HEAP이라는 상자의 위치(주소)를 저장해 버린다..  사실 생각해보면 이상하다. 그냥 값만 저장하면 1개만 저장하면 되는데, 뭐하러 주소와 값을 같이 저장해서 메모리 공간을 2배로 차지하는 것일까.. 하지만 여기에는 중요한 이유가 있다.  왜 이런 일이 발생했는지 간단히 설명해 보자면 '객체 지향 프로그래밍과 효율적인 메모리 관리를 위해서' 이다. 예를 들어보자 1. 효율적인 메모리 관리를 위해String str = "Hello"; 여기서 str 변수는 "Hello"라는 값을 직접 저장하는 것이 아니라, "Hello"라는 문자열이..

Back-End (Web)/JAVA 2024.11.11