[Java] 객체 지향 프로그래밍 - 다형성(Polymorphism)
·
Language/Java
1️⃣ 데이터 은닉과 보호 (Encapsulation)정보를 보호하기 위한 대책변수는 private 접근으로 막기public은 모두에게 열려있기 때문에 누군가 정보를 바꿀 수 있다private은 같은 클래스 안에서만 쓸 수 있다공개되는 메서드를 통한 접근 통로 마련: setter / getter메서드에 정보 보호 로직 작성 🔹 객체의 생성 제어여러 개의 객체가 필요 없는 경우객체를 구별할 필요가 없는 경우 = 수정 가능한 멤버 변수가 없고 기능만 있는 경우이런 객체를 stateless한 객체라고 한다.객체를 계속 생성/삭제하는데 많은 비용이 들어서 재사용이 유리한 경우 🔹 Singleton 디자인 패턴외부에서 생성자에 접근 금지 → 생성자의 접근 제한자를 private으로 설정내부에서는 private..
[Java] 객체 지향 프로그래밍 - 상속(Inheritance)
·
Language/Java
1️⃣ 상속 (Inheritance)기존(상위) 클래스의 자신(멤버)을 자식(하위) 클래스에서 재사용하기 위한 것상위 클래스의 생성자와 초기화 블록은 상속하지 않는다상위 클래스의 멤버를 물려 받기 때문에 코드의 절감상위 클래스의 코드를 변경하면 모든 하위 클래스들에게도 적용 → 유지보수성 향상상속의 적용extends 키워드 사용 조상 클래스(= 상위 클래스, 슈퍼 클래스) → 자식 클래스(= 하위 클래스, 서브 클래스) 🔹 Object 클래스모든 클래스의 조상 클래스별도의 extends 선언이 없는 클래스들은 extends Object가 생략됨모든 클래스에는 Object 클래스에 정의된 메서드가 있음 🔹 다양한 상속 관계상속의 관계는 is a (kind of) 관계라고 함ex) Person is a ..
[Java] 객체 지향 프로그래밍 - 추상화(Abstraction)
·
Language/Java
OOP is APIE객체 지향 프로그래밍(OOP, Object-oriented programming)Abstraction(추상화): 현실의 객체를 추상화해서 클래스를 구성한다.Polymorphism(다형성): 하나의 객체를 여러 가지 타입(형)으로 참조할 수 있다.Inheritance(상속): 부모 클래스의 자산을 물려받아 자식을 정의함으로 코드의 재사용이 가능하다.Encapsulation(데이터 은닉과 보호): 데이터를 외부에 직접 노출시키지 않고 메서드를 이용해 보호할 수 있다. 1️⃣ 객체 지향 프로그래밍객체주변의 많은 것들을 객체화해서 프로그래밍하는 것우리 주변의 있는 모든 것으로 프로그래밍의 대상 (사물, 개념, 논리..)객체 지향 프로그래밍주변의 많은 것들을 객체화해서 프로그래밍하는 것 🔹..
[Java] 자바 기본 문법 총정리
·
Language/Java
1️⃣ 변수자료를 저장하기 위한 메모리 공간타입에 따라 크기가 달라짐메모리 공간에 값(value)을 할당(assign) 후 사용 🔹 변수의 타입기본형 (primitive type)미리 정해진 크기의 데이터 표현변수 자체에 값 저장참조형 (reference type)크기가 미리 정해질 수 없는 데이터의 표현변수에는 실제 값을 참조할 수 있는 주소만 저장기본형 8개 빼고는 다 참조형임 🔹 기본형의 크기파란색의 의미정수형에서는 int가 기본, 실수형에서는 double이 기본이다byte는 8bit인데 왜 2^7까지만 처리하지?8칸 중에 맨 앞 칸은 부호 비트이기 때문이다정수 계산 시 overflow 주의필요한 수의 크기를 고려해서 int 또는 long 등 타입 선택 실수의 연산은 정확하지 않다부동소수점 정밀..
[Java] 클래스와 데이터
·
Language/Java
☕ 클래스가 필요한 이유🍪 배열 사용의 한계String studentNames[] = { "학생1", "학생2", "학생3" }; int studentAges[] = { 15, 16, 17 }; int studentGrades[] = { 90, 80, 100 };한 학생의 데이터가 studentNames[], studentAges[], studentGrades[] 3개의 배열로 나누어져 있다.따라서 데이터를 변경할 때 매우 조심해서 작업해야 한다.사람이 관리하기 좋은 방식이 아니다. (→ 사람이 관리하기 좋은 방식은 학생이라는 개념을 하나로 묶는 것) ☕ 클래스 도입🍪 학생 클래스 정의public class Student { String name; int age; int grade;} 클래..
[Java] 자바 메서드
·
Language/Java
☕ 메서드 선언(Method Declaration)public static int add(int a, int b) 메서드의 선언 부분(메서드 이름, 반환 타입, 매개변수(파라미터) 목록 포함)메서드 선언 정보를 통해 다른 곳에서 해당 메서드 호출 가능public staticpublic: 다른 클래스에서 호출할 수 있는 메서드 (접근 제어)static: 객체를 생성하지 않고 호출할 수 있는 정적 메서드int add(int a, int b)int: 메서드 실행 결과를 반환할 때 사용할 반호나 타입 지정add: 메서드 이름(int a, int b): 파라미터(매개변수), 메서드를 호출할 때 전달하는 입력 값 정의, 해당 메서드 안에서만 사용되는 변수들 ☕ 메서드 호출호출: call("hello", 20)메서드..
[Java] Scanner로 입력 받기
·
Language/Java
☕ Scanner 클래스 사용package scanner;import java.util.Scanner;public class Scanner1 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.print("문자열을 입력하세요:"); String str = scanner.nextLine(); System.out.print("정수를 입력하세요:"); int intValue = scanner.nextInt(); System.out.print("실수를 입력하세요:"); double doubleValue..
[Java] 자바 연산자
·
Language/Java
☕ 자주 사용하는 연산자산술 연산자: + , - , * , / , % (나머지)증가 및 감소 연산자: ++ , --비교 연산자: == , != , > , = , 논리 연산자: && (AND), || (OR), ! (NOT)대입 연산자: = , += , -= , *= , /= , %= ☕ 연산자 우선순위괄호 ()단항 연산자 (예: ++ , -- , ! , ~ , new , (type) )산술 연산자 ( * , / , % 우선, 그다음에 + , - )Shift 연산자 ( > , >>> )비교 연산자 ( , >= , instanceof )등식 연산자 ( == , != )비트 연산자 ( & , ^ , | )논리 연산자 ( && , || )삼항 연산자 ( ? : )10. 대입 연산자 ( = , += , -= ,..