728x90

Java 53

오버로딩(Overloading)과 오버라이딩(Overriding)

오버로딩(Overloading) - 함수 명의 중복 정의를 허용하는 것으로 이를 적용하기 위해서는 메서드의 이름은 같고 인자의 개수와 자료형이 달라야만 한다. 조건이 같은데 리턴 값만 다르게 갖는 오버로딩은 적용할 수 없다. 오버라이딩(Overriding) - 상속관계에서 함수의 재정의를 의미하며 오버로딩과는 다르게 인자의 개수와 자료형이 같아야만 한다. 주로 상위 클래스의 동작을 상속받은 하위 클래스에서 메서드를 변경하기 위해 사용한다. 아래의 포인트와 컬러 포인트 클래스에서 각각의 생성자들이 여러 번 재정의 되는 것을 확인할 수 있는데 이것을 오버로딩이라고 하며 각각 클래스에서 showInfo가 서로 다른 값을 출력하는데 이를 오버라이딩이라고 한다.

Java/study 2022.06.20

클래스와 객체

우리가 객체를 만들기 위해서는 항상 클래스를 먼저 선언 해주어야한다. 객체의 상태를 표현하는것을 멤버변수(속성, 필드, 어트리뷰트)라고 할 수 있으며, 객체의 행동(기능)을 멤버함수 또는 메서드라고 한다. 멤버함수(메서드)를 사용할 때는 기본형(void 또는 자료형)을 적어야하고 기능을 구현한 후 input과 output을 확인하여 올바른지 체크하여야 한다. 멤버변수는 인스턴스(객체) 변수라고도 부르며 객체끼리 값을 공유하지 않기 때문에 객체마다 고유한 값을 가지고 있다. 객체끼리 값을 공유하는 변수는 클래스 변수라고 하며 객체끼리 값을 공유한다는 것은 같은 클래스를 이용하는 a객체의 변화가 b객체에도 영향을 준다는 의미이다. 클래스변수는 변수의 자료형 앞에 static(객체와 무관하게)를 붙여 사용한다..

Java/study 2022.06.16

객체 지향 프로그래밍(OOP)

객체지향 프로그래밍(OOP)에는 4가지 특징이 있다. 1. 추상화 추상화를 어떻게 진행하느냐에 따라 앞으로의 객체를 정의할 수 있게 되며 설계라고도 할 수 있다. 예를 들면 우리가 자동차라라고 말을 할 때 누군가는 승용차를 누군가는 버스를, 스포츠카를, SUV를 떠올릴 수 있을 것이다. 이것들은 바퀴가 달려있고 창문이 있으며 엔진이 달려있다. 이런 공통적인 부분들을 모아 Car라는 class로 관리할 수 있을 것이다. 이렇게 데이터의 의미나 수행과정이 비슷한 개념들을 묶어 정의(선언)하는 것을 추상화라고 한다. 2. 캡슐화 자바에서 우리가 Scanner나 Random과 같은 객체를 이용할 때 구성은 모르지만 사용법만 알아도 사용이 가능하다. 캡슐화는 클래스 내부의 변수와 메서드를 하나로 묶어주는 특징을 ..

Java/study 2022.06.15

함수(function,method)

함수는 어떤 문제를 해결하기 위한 소스코드를 묶어 동작하도록 구현하여 필요에 따라 메인 함수 안에서 호출하여 사용하는 기능이라고 할 수 있다. 함수를 선언하게 되면 반복문처럼 코드의 재사용성이 증가되고 그로 인해 오류의 파급효과가 줄어들고 유지보수에도 용이하다. 함수의 선언 시 public static 리턴 타입(void, 자료형) 메서드명() { 실행할 코드; return; // 리턴 타입이 void라면 return값이 없다. } 위와 같은 모습으로 사용되는데 리턴 타입으로는 자료형이나 void가 올 수 있는데 자료형이 사용되는 경우 반드시 return값이 있어야 하며 void가 사용될 경우는 return(반환 값)이 없다. return 이후에는 함수의 동작이 끝나게 되어 뒤에 다른 구문이 올 수 없다..

Java/study 2022.06.14

이진탐색(이분검색)

이진탐색은 탐색할 대상 배열이 정렬되어있을 때만 사용할 수 있는 탐색법이다. 배열의 중앙에 있는 값을 이용하여 찾고자 하는 항목이 기준값의 왼쪽 있는지 오른쪽에 있는지를 알아내어 탐색범위를 반으로 줄일 수 있다. 값이 속해있지 않은 부분은 고려하지 않아도 되기 때문에, 매 단계에서 탐색 범위를 반으로 줄여 나갈 수 있다. 데이터의 삽입이나 삭제가 빈번한 경우에는 적합하지 않고, 주로 고정된 데이터에 대한 탐색에 적합하다. 탐색되어야 할 범위의 인덱스[0]를 Low, 인덱스(n-1)를 High라고 할 때 중간값 Mid는 (low+high)/2이다. 구하고자 하는 값이 중간값보다 높다면 low를 mid+1로 만들어주고(탐색범위 오른쪽 반으로 줄어듬) 중간값보다 낮다면 high를 mid-1로 만들어 준다.(탐..

Java/study 2022.06.13

최대값 찾기

배열을 이용한 최대값 찾기는 최대값 max의 초기값을 Index [0]으로 단정 지어 기준값을 잡은 다음 Index [1]부터 [4]까지의 값들과 비교해가며 최대값을 찾는다. 최대값의 위치(index)를 알고 싶다면 변수를 생성하여 위치 값을 저장해주며 초기화를 진행해준다. 초기화를 진행해야하는 이유는 최대값이 Index [0]에 존재할 때 값을 할당받지 못하기 때문이다. 변수 max에 저장된 값이 비교되는 값보다 더 크지 않을 시 비교값과 교환하여 로직을 진행한다. 즉, max의 초기값을 Index[0]이라하고 Index [1]과 비교하여 max값이 작다면 Index [1]의 값이 max의 값으로 교환된다. 이런 식으로 반복 진행하여 배열의 최대값을 찾아내며 배열의 크기가 5라고 가정한다면 최대 4회 ..

Java/study 2022.06.13

정렬(버블 정렬)

배열은 자료구조와 알고리즘이 더해진 것으로 비슷한 데이터를 같은 곳에 저장하기 위해 주로 사용한다. 하지만 데이터를 저장할 때 무작위로 저장하게 되면 다음에 데이터를 찾을 때 처음부터 끝까지 다시 탐색할 수밖에 없다. 배열을 사용하는 것은 여러 개의 데이터를 다루는 상황으로 탐색(검색)을 하는 상황이 오기 때문에 탐색을 효율적으로 하기 위해서는 데이터를 저장할 때 정렬을 해준다. 배열의 정렬 알고리즘으로는 버블, 삽입, 선택, 퀵, 셀, 도수,.... 등이 있다. 이 중 버블정렬은 두 개의 인덱스 값을 서로 비교해가며 기준이 된 값을 뒤로 넘겨가며 정렬하는 방법이다. 예를 들어 숫자가 작은 순서대로 정렬을 한다고 할 때 [ 5, 4, 3, 1, 2] -> [ 4, 3, 1, 2, 5] 이와 같은 모양이 ..

Java/study 2022.06.13
728x90