전체 글 110

[JAVA] 상속 개념 및 예시

클래스간의 관계와 상속 📌 상속의 사전적 정의는 부모가 자식에게 물려주는 행위를 말합니다. 객체 지향 프로그램에서도 부모 클래스의 필드와 메서드를 자식 클래스에게 물려줄 수 있습니다. 상속을 사용하면 적은 양의 코드로 새로운 클래스를 작성할 수도 있고 공통적인 코드를 관리하여 코드의 추가와 변경이 쉬워질 수도 있습니다. 이러한 특성 때문에 상속을 사용하면 코드의 중복이 제거되고 재사용성이 크게 증가하여 생산성과 유지보수성에 매우 유리해 집니다. 📌 클래스간의 상속은 extends 키워드를 사용하여 정의할 수 있습니다. public class 자식클래스 extends 부모클래스 { } 상속의 키워드는 extends 우리는 상속의 개념을 확장의 개념으로 이해해야합니다. 부모 클래스에 새로운 필드와 메서드가 ..

JAVA 2023.05.31

[JAVA] 접근 제어자

📌 제어자는 클래스, 변수, 메서드의 선언부에 사용되어 부가적인 의미를 부여해 줍니다. 접근 제어자 : public, protected, default, private 그 외 제어자 : static, final, abstract ❗️ 하나의 대상에 여러 개의 제어자를 조합해서 사용할 수 있으나, 접근 제어자는 단 하나만 사용할 수 있습니다. 접근 제어자 📌 멤버 또는 클래스에 사용, 외부에서 접근하지 못하도록 제한합니다. 클래스, 멤버변수, 메서드, 생성자에 사용되고, 지정되어 있지 않다면 default 입니다. public : 접근 제한이 전혀 없습니다. protected : 같은 패키지 내에서, 다른 패키지의 자손클래스에서 접근이 가능합니다 default : 같은 패키지 내에서만 접근이 가능합니다. ..

JAVA 2023.05.31

[JAVA] this 와 this()

this 📌 this는 객체 즉, 인스턴스 자신을 표현하는 키워드입니다. 객체 내부 생성자 및 메서드에서 객체 내부 멤버에 접근하기 위해 사용될 수 있습니다. 객체 내부 멤버에 접근할 때 this 키워드가 필수는 아니지만 상황에 따라 필수가 될 수 있습니다. public Car(String model, String color, double price) { model = model; color = color; price = price; } 이처럼 생성자를 선언하는데 매개변수명과 객체의 필드명이 동일할 경우 오류가 발생하지는 않지만 생성자 블록 내부에서 해당 변수들은 객체의 필드가 아닌 가장 가까운 매개변수명을 가리키게 됨으로 자기 자신에게 값을 대입하는 상황이 되어 버립니다. public Car(Strin..

JAVA 2023.05.31

[JAVA] 생성자

📌 생성자는 객체가 생성될 때 호출되며 객체를 초기화하는 역할을 수행합니다. 생성자 선언과 호출 public Car() {} // 선언 Car car = new Car(); // 호출 생성자는 반환 타입이 없고 이름은 클래스의 이름과 동일합니다. new 연산자에 의해 객체가 생성되면서 Car(); 즉, 생성자가 호출됩니다. 기본 생성자 📌 기본 생성자는 선언할 때 괄호( ) 안에 아무것도 넣지않는 생성자를 의미합니다. 모든 클래스는 반드시 생성자가 하나 이상 존재합니다. 만약 클래스에 생성자를 하나도 선언하지 않았다면 컴파일러는 기본 생성자를 바이트코드 파일에 자동으로 추가시켜줍니다. 따라서 이러한 경우는 기본 생성자 생략이 가능합니다. 반대로 단 하나라도 생성자가 선언되어있다면 컴파일러는 기본 생성자를..

JAVA 2023.05.31

[JAVA] 지역변수 및 상수

지역변수 메서드 내부에 선언한 변수를 의미합니다. 메서드가 실행될때마다 독립적인 값을 저장하고 관리하게됩니다. 지역 변수는 메서드 내부에서 정의될때 생성되어 메서드가 종료될 때까지만 유지됩니다. public class Main { public static void main(String[] args) { Main main = new Main(); // 메서드 호출 : main.getClass() System.out.println("main.getClass() = " + main.getNumber()); System.out.println("main.getClass() = " + main.getNumber()); System.out.println("main.getClass() = " + main.getNumb..

JAVA 2023.05.31

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

📌 멤버 = 필드 + 메서드 인스턴스 멤버 = 인스턴스 필드 + 인스턴스 메서드 클래스 멤버 = 클래스 필드 + 클래스 메서드 📌 인스턴스 멤버 & 클래스 멤버 필드와 메서드는 선언하는 방법에 따라서 인스턴스 멤버와 클래스 멤버로 구분할 수 있습니다. 인스턴스 멤버는 객체 생성 후에 사용할 수 있고 클래스 멤버는 객체 생성 없이도 사용할 수 있습니다. 1. 인스턴스 멤버 📌객체(인스턴스)를 생성한 후 사용할 수 있는 필드와 메소드를 의미 또한 객체의 인스턴스 필드는 각각의 인스턴스 마다 고유하게 값을 가질 수 있습니다. 메서드는 메서드 영역에 두고서 모든 인스턴스들이 공유해서 사용된다. 대신 무조건 객체를 생성 즉, 인스턴스를 통해서만 메서드가 사용될 수 있도록 제한을 걸어두었다. (메서드) 2. 클래스..

JAVA 2023.05.31

[JAVA] 객체의 속성(필드),행위(메서드)

객체의 속성 : 필드 필드란? 📌 필드는 객체의 데이터를 저장하는 역할을 한다. 객체의 필드는 크게 고유한 데이터, 상태 데이터, 객체 데이터로 분류할 수 있다. 이처럼 자동차 객체는 4개의 고유한 데이터와 3개의 상태 데이터 그리고 3개의 객체 데이터를 가질 수 있다. 소프트웨어의 부품을 객체라 표현한다. 이 3개의 객체 데이터를 자동차를 만들기 위한 부품 데이터라고 이해해도 좋다. 필드의 초기값과 초기화 📌 우리가 정의하여 선언한 클래스의 필드들은 기본적으로 초기값을 제공하지 않을 경우 객체가 생성될 때 자동으로 기본값으로 초기화된다. 초기값을 제공하는 방법은 ‘필드타입 필드명 = 값;’ 이렇게 직접 초기화 할 수 있다. String model = "Gv80"; 필드 타입별 기본값 필드의 사용 방법 ..

JAVA 2023.05.30

[JAVA] 객체 생성과 참조형 변수

객체 생성과 참조형 변수 ● 객체 생성 new Car(); // Car클래스 객체 생성 객체 생성 연산자인 ‘new’를 사용하면 클래스로부터 객체를 생성할 수 있다. new 연산자 뒤에는 해당 클래스의 생성자 호출 코드를 작성한다. 형태가 Car();즉, 기본 생성자의 형태와 같기 때문에 new 연산자에 의해 객체가 생성되면서 기본 생성자가 호출된다. ● 참조형 변수 Car car1 = new Car(); // Car클래스의 객체인 car1 인스턴스 생성 Car car2 = new Car(); // Car클래스의 객체인 car2 인스턴스 생성 new 연산자를 통해서 객체가 생성되면 해당 인스턴스의 주소가 반환되기 때문에 해당 클래스의 참조형 변수를 사용하여 받아줄 수 있다. ● 객체 배열 객체는 참조형 ..

JAVA 2023.05.29

[JAVA] 클래스 설계

📌 클래스는 객체를 생성하기 위한 설계도 클래스의 구성 멤버에는 필드, 생성자, 메서드가 있다. 4 STEP 📌 우리가 클래스를 만들기 위해서는 4가지 STEP 이 필요하다. 만들려고 하는 설계도를 선언합니다.(클래스 선언) 객체가 가지고 있어야할 속성(필드)을 정의한다. 객체를 생성하는 방식을 정의한다.(생성자) 객체가 가지고 있어야할 행위(메서드)를 정의한다! 자동차 클래스를 만들어 보겠다! 1. 클래스 선언! public class Car {} //public class Car : 공개된 자동차 클래스 선언을 의미한다. 2. 클래스의 필드 정의! String company; // 자동차 회사 String model; // 자동차 모델 String color; // 자동차 색상 double price..

JAVA 2023.05.29

[JAVA] 객체지향 프로그래밍 이해하기 (2)

1. 객체 지향 프로그래밍의 특징 📌 우리가 객체지향 프로그래밍을 하다보면 필연적으로 만나게 되는 개념이 있습니다. 바로 캡슐화, 상속, 다형성, 추상화입니다. 앞으로 학습하게 되는 내용에 포함되어 있기 때문에 간단하게 학습하고 가겠습니다. 1) 캡슐화 캡슐화란 속성(필드)와 행위(메서드)를 하나로 묶어 객체로 만든 후 실제 내부 구현 내용은 외부에서 알 수 없게 감추는 것을 의미한다. 외부 객체에서는 캡슐화된 객체의 내부 구조를 알 수 없기 때문에 노출시켜 준 필드 혹은 메서드를 통해 접근할 수 있다. 필드와 메서드를 캡슐화 하여 숨기는 이유는 외부 객체에서 해당 필드와 메서드를 잘못 사용하여 객체가 변화하지 않게 하는데 있다. Java에서는 캡슐화된 객체의 필드와 메서드를 노출 시킬지 감출 지 결정하..

JAVA 2023.05.29