전체 글 73

[JAVA #8] 9. 다형성(Polymorphism)

다형성 객체지향 프로그래밍의 3대 특징 중 하나로 '여러개의 형태를 갖는다'는 의미 하나의 행동으로 여러가지 일을 수행하는 개념 상속을 이용한 기술로 부모 타입으로부터 파생된 여러가지 타입의 자식 객체를 부모 클래스 타입 하나로 다룰 수 있는 기술 클래스 형변환 업 캐스팅(Up Casting) 상속 관계에 있는 부모, 자식 클래스 간에 부모타입의 참조형 변수가 모든 자식 타입의 객체 주소를 받을 수 있음 (자동) e.g. Car c = new Sonata(); Sonata 클래스는 Car 클래스의 후손 Sonata 클래스형에서 Car 클래스형으로 바뀜 *자식 객체의 주소를 전달받은 부모타입의 참조 변수를 통해서 사용할 수 있는 후손의 정보는 원래 부모타입이었던 멤버만 참조 가능 다운 캐스팅(Down Ca..

JAVA 2023.03.02

[JAVA #7] 8. 상속(Inherit)

상속 다른 클래스가 가지고 있는 멤버(필드, 메소드)들을 새로 작성할 클래스에서 직접 만들지 않고 상속을 받음으로써 새 클래스가 자신의 멤버처럼 사용할 수 있는 기능 목적 클래스의 재사용, 연관된 일련의 클래스들에 대한 공통적인 규약 정의 장점 보다 적은 양의 코드로 새로운 클래스 작성 가능 코드를 공통적으로 관리하기 때문에 코드의 추가 및 변경 용이 코드의 중복을 제거하여 프로그램의 생산성과 유지보수에 크게 기여 상속의 특징 모든 클래스는 Object 클래스의 후손 Object 클래스가 제공하는 메소드를 오버라이딩하여 메소드 재구현 간능 부모클래스의 생성자, 초기화 블록은 상속안됨 자식 클래스 생성 시, 부모 클래스 생성자가 먼저 실행 자식 클래스 생성자 안에서 부모 클래스 생성자 호출을 명시하고 싶으..

JAVA 2023.02.28

[JAVA #7] 7. 객체 배열

객체배열 객체를 저장하는 배열로 배열의 자료형을 클래스명(사용자 정의 자료형)으로 지정하여 활용 객체배열 선언과 할당 선언 클래스명[] 배열명; 클래스먕 배열명[]; 할당 배열명 = new 클래스명[배열크기]; 선언과 동시에 할당 클래스명 배열명[] = new 클래스명[배열크기]; 객체배열 초기화 인덱스를 이용한 초기화 배열명[i] = new 클래스명(); 선언과 동시에 할당 및 초기화 클래스명 배열명[] = {new 클래스명(),new 클래스명()}; 주소값이 저장 -> 해당 클래스의 객체를 가리킴 객체 -> 다른 타입의 자료형들이 묶여있음 방의 크기가 다 다름 * 객체배열 실습 package com.test01.model; public class Book { //필드 private String tit..

JAVA 2023.02.28

[JAVA #6] 6. 객체

Chap01. 객체지향언어 객체 지향 언어 현실 세계는 사물이나 개념처럼 독립되고 구분되는 각각의 객체로 이루어져 있으며 발생하는 모든 사건들은 객체간의 상호작용이다. 이 개념을 컴퓨터로 옮겨 놓아 만들어낸 것이 객체지향 언어이다. 자바에서 객체(Object)란 ? 클래스에 정의된 내용대로 new 연산자를 통해 메모리 영역에 생성된 것(메모리에 할당) 메소드 - 기능 필드 - 정보, 데이터 객체 지향 언어 - 클래스 클래스 객체의 특성에 대한 정의를 한 것으로 캡슐화(기능1, 기능2 -> 메소드, 정보들 ->필드)를 통해 기능을 포함한 개념. 사물이나 개념의 공통 요소를 추상화(abstraction)하여 정의함 추상화(abstraction) 유연성을 확보하기 위해 구체적인 것은 제거한다는 의미 프로그램에..

JAVA 2023.02.27

[백준 / 브론즈2] 16561 : 3의 배수 (JAVA)

문제 풀이방법 for문과 if문을 통해 3으로 분해되는 개수를 카운트한다. for문 3개를 사용할 경우 1000 * 1000 * 1000의 연산으로 시간초과이다. 따라서 2개의 for문을 사용해야 한다. for문 2개로 2개의 숫자를 정하면 나머지 숫자는 자동으로 정해지고 이 숫자가 0이 아닐 경우 카운트하면 된다. 코드 package com.test01; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int count = 0, sum = 0; for (int i = 1; i < n / 3; ..

코딩테스트 2023.02.26

[JAVA #5] 4. 배열(Array), 5. 2차원 배열

배열 같은 자료형의 변수를 하나의 묶음으로 다루는 것 배열은 저장된 값마다 인덱스 번호가 0부터 시작하여 설정 배열 선언과 할당 배열 선언 자료형[] 배열명; 자료형 배열명[]; 배열 할당 자료형[] 배열명 = nw 자료형[배열크기]; 자료형 배열명[] = nw 자료형[배열크기]; 배열 저장구조 배열은 참조 변수로 Heap영역에 할당되며 배열 공간의 주소를 저장 배열 공간의 주소를 이용해 인덱스를 참조하는 방식으로 값 처리 배열 초기화 인덱스를 이용한 초기화 for문을 이용한 초기화 선언과 동시에 초기화 배열 복사 얕은 복사 객체의 주소값만 가져와 참조형 변수에 저장하고 하나의 객체를 두변수가 참조하는 것 e.g. int[] arr1 = nex int[4]; int[] arr2 = arr1; 깊은 복사 ..

JAVA 2023.02.25

[백준 / 실버4] 1120 : 문자열 (JAVA)

문제 풀이방법 문자열 A에 문자가 앞뒤 모든 부분에 추가될 수 있으므로 이중포문을 통해 최소의 차이를 min에 저장한다. 코드 package boj1120; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Scanner; public class Main { public static void main(String[] args) throws IOException { //Scanner sc = new Scanner(System.in); //String str1 = sc.next(); //String str2 = sc.next(); BufferedReader br ..

코딩테스트 2023.02.23