JAVA


✅ 접근지시 제어자접근지시 제어자클래스 외부에서 클래스의 멤버변수, 메서드, 생성자를 사용할 수 있는지 여부정보은닉 (information hiding)private : 같은 클래스 내부에서만 접근 가능protected : 같은 package, 상속관계 클래스에서 접근 가능public : 클래스 외부 어디서든 접근 가능default : 같은 패키지 내부에서만 접근가능(상속 관계라도 패키지가 다르면 접근x)✅ getter, setter 메서드getter setterprivate로 선언된 멤버 변수에 대해 접근, 수정할 수 있는 메서드를 public으로 제공get() 메서드만 제공되는 경우 read-only 필드get(), set() 메서드를 사용하지 않고 open 하면 직접 멤버 변수에 접근하여 유효하지 ..


✅ 생성자(Constructor)생성자 객체 생성시에 필드의 초기화를 담당반환 값이 없고 클래스 이름과 동일클래스에는 반드시 적어도 하나 이상의 생성자가 존재 → “개발자가 직접 구현기본 생성자(Default Constructor)클래스에 생성자가 없는 경우 컴파일러가 컴파일시 코드에 주입해주는 생성자로 매개변수와 구현부가 없다생성자 예시 코드// 생성자 예시 코드public class Student { public int studentNumber; public String studentName; public int grade; // 직접 구현한 생성자 코드 public Student(int studentNumber, String studentName, int grade) { this.studentNu..


✅ 객체지향 프로그래밍(Object-Oriented Programming)객체지향 프로그래밍(OOP)객체지향 프로그래밍은 실세계(Real World)에 존재하고 인지하고 있는 객체(Object)를 소프트웨어의 세계에서 표현하기 위해 객체의 핵심적인 개념 또는 기능만을 추출하는 추상화(abstraction)를 통해 모델링하려는 프로그래밍 패러다임을 의미한다.객체 : 의사나 행위가 미치는 대상 혹은 구체적, 추상적 데이터 단위객체지향의 특징추상화캡슐화상속다형성(객체지향의 핵심) : 역할(인터페이스)과 구현(구현객체)을 명확히 분리 좋은 객체 지향 설계의 5가지 원칙(SOLID)SRP(Single Responsibility Principle) : 단일 책임원칙하나의 클래스는 하나의 책임만 가져야 한다 (모호..


✅ 자바의 유용한 클래스JAVA API Docshttps://docs.oracle.com/en/java/javase/index.html java.lang 패키지프로그래밍시 자동 임포트(import)많이 사용하는 기본 클래스들이 속한 패키지Object 클래스모든 클래스의 최상위 클래스java.lang.Object 클래스모든 클래스는 Object 클래스를 상속받고, Object 클래스의 메서드 중 일부는 재정의하여 사용 가능컴파일러가 extends Object를 자동으로 추가toString() 메서드객체의 정보를 문자열로 바꿔 사용할 때 사용String 혹은 Integer 클래스는 해당 메서드가 이미 재정의 되어 있음System.out.println()에 출력 값이 기본 타입이 아닌 객체를 사용시 객체의 t..


✅ 인터페이스인터페이스인터페이스란? → 개발 코드와 객체가 서로 통신하는 접점의 역할을 한다 → 클라이언트 코드는 인터페이스를 보고 개발 진행 구현부는 알 필요가 없음모든 메서드가 추상 메서드로 선언된다 public abstract → 따로 선언하지 않아도 컴파일 과정에서 컴파일러가 자동으로 선언해준다 → 자바 8부터 디폴드 메서드와 정적(Static) 메서드 기능의 제공으로 일부 구현 코드가 존재하긴함모든 변수는 상수로 선언된다 → public static final, 데이터가 변경되지 않는다 → 따로 선언하지 않아도 컴파일 과정에서 컴파일러가 자동으로 선언해준다구현 객체(클래스)에서 implements 키워드를 통해 인터페이스를 구현하는 클래스임을 알려준다인터페이스 메서드는 기본적으로 public 접..


✅ 추상 클래스(abstract class)추상 클래스구현 코드 없이 메서드의 선언만 있는 추상 메서드를 포함하는 클래스추상 메서드는 메서드의 정의가 없고 단순히 메서드 선언만 존재한다abstract 예약어를 사용하여 추상 클래스와 추상 메서드임을 나타낼 수 있다추상 클래스는 new를 통해 인스턴스 생성이 불가능하다 → 다형성을 이용하여 생성모든 메서드가 구현된 클래스일지라도 추상 클래스로 선언하면 인스턴스 생성이 불가능하다추상 클래스 내의 추상 메서드는 하위 클래스가 상속받아 구현해야 한다추상 클래스 내의 구현 된 메서드는 하위 클래스가 공통으로 사용하는 메서드이지만, 필요에 따라 하위 클래스에서 상속 받아 재정의 가능하다// 추상 클래스 선언 예시public abstract class Computer..


✅ 배열배열같은 타입의 데이터를 연속된 공간에 나열하고 각 데이터에 인덱스를 부여한 자료구조배열은 같은 타입의 데이터만 저장가능 → 선언과 동시에 저장 할 수 있는 타입 결정, 만약 다른 타입의 값 저장 시 컴파일 에러(type mismatch)가 발생인덱스(Index) : 배열에 저장된 데이터를 읽거나 저장하는데 사용, 인덱스는 0부터 시작배열 길이는 변경할 수 없다배열 변수는 참조 변수이다 → 배열은 힙(Heap)영역에 생성배열 선언// 형식1 -> 개인적인 선호 방식타입[] 변수;int[] intArray;double[] doubleArray;String[] strArray;// 형식2타입 변수[];int intArray[];double doubleArray[];String strArray[]; ..


✅ 다형성(Polymorphism)다형성하나의 코드가 여러 자료형으로 구현되어 실행되는 것을 의미한다같은 코드에서 여러 다른 실행 결과가 나온다정보은닉, 상속과 더불어서 객체지향 프로그램밍의 가장 큰 특징 중 하나이다다형성을 활용하여 유연하며 확장성있고, 유지보수가 편리한 프로그램을 만들 수 있다다형성을 사용하는이유상속과 메서드 재정의를 활용하여 확장성 있는 프로그램을 만들 수 있다상위 클래스에서는 공통적인 부분을 제공하고 하위 클래스에서는 각 클래스에 맞는 기능을 구현한다여러 클래스를 하나의 상위 클래스 타입으로 핸들링이 가능하다 → 업캐스팅과 메서드 재정의를 이용


✅ static 변수static 변수객체가 공통으로 사용하는 변수가 필요한 경우인스턴스 객체가 생성될 때 만들어지는 변수가 아닌 처음 프로그램이 메모리에 로딩될 때 메모리를 할당클래스 변수 혹은 정적 변수라고 함인스턴스 생성과 무관하게 사용가능하다 따라서 클래스 이름으로 직접 참조// static 변수 예제코드public class Employee { private static int serialNum = 1000; // 정적변수 선언 -> 객체가 공유하는 필드 private int employeeId; private String employeeName; private String department; public Employee(){ serialNum++; ..