Java
[JAVA] 추상클래스
추상클래스 미완성된 클래스 추상클래스 특징 추상메소드가 존재하는 순간 반드시 추상클래스로 정의된다 단, 추상메소드가 없어도 클래스명 앞에 abstract를 붙이면 추상클래스로 만들 수 있다 객체 생성이 불가능하다(단, 참조형 변수로써 자식 객체를 담을 때는 사용 가능하다)⇒다형성 적용 추상클래스가 필요한 때 자식 클래스들에게 일정한 규칙을 부여하고 싶을 때 쓰면 좋다 클래스가 아직 구체적이지 않고 구현이 완벽한 상태가 아닐 때(개념적으로) 현재 이 클래스에 대한 객체 생성을 애초에 막고싶을 때(기술적으로) 추상메소드 미완성된 메소드로 몸통부 { }가 구현되어있지 않은 메소드 추상메소드 특징 자식클래스에서 오버라이딩을 통해 완성되는 메소드(강제로 오버라이딩을 해야한다) 오버라이딩을 안했을 경우 에러 발생 ..
[JAVA] 상속
상속 매 클래스마다 중복된 필드, 메소드들을 하나의 클래스(부모)로 정의해둔 후에 다른 클래스(자식)에서 해당 부모 클래스의 내용들을 가져다 쓰는 개념 상속의 장점 보다 적은 양의 코드로 새로운 클래스들을 관리 가능하다 중복된 코드를 부모 클래스에서 공통적으로 관리하기 때문에 새로운 코드를 추가하거나, 기존의 코드를 수정하는데에 용이하다 프로그램의 생산성을 높여준다. 유지보수에도 크게 기여한다 상속의 특징 클래스간의 상속은 다중 상속이 불가능하다(단일 상속만 가능) 명시되어있지는 않지만 자바에서 제공하는, 또는 내가 만든 모든 클래스는 Object라는 클래스의 후손이다 Object 클래스에 있는 메소드를 그대로 가져다 쓸 수 있음 Object 클래스에 있는 메소드가 맘에 안든다면 내 입맛대로 오버라이딩해..
[JAVA] getter와 setter
객체 지향 프로그래밍에서 객체의 데이터는 객체 외부에서 직접적으로 접근하는 것을 막는다. 그 이유는 객체의 데이터를 외부에서 마음대로 읽고 변경할 경우 객체의 무결성이 깨질 수 있기 때문이다 이런 문제점을 해결하기 위해 데이터는 외부에서 접근할 수 없도록 막고 메소드는 공개해서 외부에서 메소드를 통해 데이터에 접근하도록 유도한다 이러한 역할을 하는 메소드는 Setter이다 외부에서 객체의 데이터를 읽을 때도 메소드를 사용하는 것이 좋다 이러한 역할을 하는 메소드는 Getter이다 클래스를 선언할 때 가능하다면 필드를 private로 선언해서 외부로부터 보호하고, 필드에 대한 Setter와 Getter 메소드를 작성해서 필드값을 안전하게 변경/사용하는 것이 좋다 private 데이터타입 name; //Ge..
[JAVA] 객체와 클래스
클래스 클래스에는 객체를 생성하기 위한 필드와 메소드가 정의되어 있다 클래스로부터 만들어진 객체를 해당 클래스의 인스턴스(instance)라고 한다 클래스로부터 객체를 만드는 과정을 인스턴스화라고 한다 클래스 선언 클래스 작성 규칙 하나 이상의 문자로 이루어져야 한다. ex) Car, SportCar 첫 번째 글자는 숫자가 올 수 없다. ex) 3Car(x) '$', '_' 외의 특수 문자는 사용할 수 없다. ex) $Car, _Car, %Car(x), *Car(x) 자바 키워드는 사용할 수 없다. ex) int(x), if(x) 객체 생성과 클래스 변수 클래스로부터 객체를 생성하는 방법은 new 연산자를 사용하면 된다 new 클래스(); new 연산자로 생성된 객체는 메모리 힙(heap) 영역에 생성된..
[JAVA] Level.1 - 두 정수 사이의 합
코린이의 문제 풀이... 훈수 대환영!!! 문제 설명 두 정수 a, b가 주어졌을 때 a와 b 사이에 속한 모든 정수의 합을 리턴하는 함수, solution을 완성하세요. 예를 들어 a = 3, b = 5인 경우, 3 + 4 + 5 = 12이므로 12를 리턴합니다. 제한 조건 a와 b가 같은 경우는 둘 중 아무 수나 리턴하세요. a와 b는 -10,000,000 이상 10,000,000 이하인 정수입니다. a와 b의 대소관계는 정해져있지 않습니다. 입출력 예 a b return 3 5 12 3 3 3 5 3 12 나의 풀이 class Solution { public long solution(int a, int b) { long answer = 0; int max = Math.max(a, b); int mi..
[JAVA] 객체 지향 프로그래밍(OOP)
객체 지향 프로그래밍 (OOP: Object Oriented Programming) 만들고자 하는 완성품인 객체를 모델링하고, 집합 관계에 있는 부품 객체와 사용 관계에 있는 객체를 하나씩 설계한 후 조립하는 방식으로 프로그램을 개발하는 기법이다 객체(Object) 물리적으로 존재하거나 추상적으로 생각할 수 있는 것 중에서 자신의 속성을 가지고 있고 다른 것과 식별 가능한 것을 말한다. EX) 자동차, 자전거, 책, 사람, 공부, 주문, 수면 등 객체는 속성과 동작으로 구성되어 있다. 자바에서는 속성과 동작을 각각 필드(field)와 메소드(method)라고 부른다 현실 세계의 객체를 소프트웨어 객체로 설계하는 것을 객체 모델링(Object Modeling)이라고 한다 객체 지향 프로그래밍의 특징 캡슐화..
[JAVA] 배열
변수는 한 개의 데이터만 저장할 수 있다. 따라서 저장해야 할 데이터의 수가 많아지면 그만큼 많은 변수가 필요하다 배열이란? 배열은 같은 타입의 데이터를 연속된 공간에 나열시키고, 각 데이터에 인덱스(index)를 부여해 놓은 자료구조이다 배열은 같은 타입의 데이터만 저장할 수 있다(ex: int배열은 int 값만 저장 가능하고, String 배열은 문자열만 저장 가능하다) 배열은 선언과 동시에 저장할 수 있는 데이터 타입이 결정된다 한 번 생성된 배열은 길이를 늘리거나 줄일 수 없다 배열 선언 배열을 사용하기 위해서는 우선 배열 변수를 선언해야 한다 배열 변수 선언은 두 가지 형태로 작성할 수 있다( 자료형[ ] 배열명; 자료형 배열명[ ];) 배열 변수는 참조 변수에 속한다 참조할 배열 객체가 없다면..
[JAVA] 분기문-break, continue
break문 반복문인 for문, while문, do-while문을 실행 중지할 때 사용한다 switch문에서도 break문을 사용하여 switch문을 종료한다 break문 예시 for(int i=1; i
[JAVA] 반복문
반복문은 코드들이 반복적으로 실행되도록 할 때 사용되며, 반복문의 종류는 for문, while문, do-while문이 있다 for문과 while문은 서로 변환이 가능하기 때문에 반복문을 작성할 때 어떤 것을 선택해도 좋지만, for문은 반복 횟수를 알고 있을 때 주로 사용하고, while문은 조건에 따라 반복할 때 주로 사용한다 while문과 do-while문의 차이는 조건을 먼저 검사하느냐 나중에 검사하느냐의 차이일 뿐 실행 방식은 동일하다 for문 for(초기식; 조건식; 증감식){ 수행될 문장; } 초기화식의 역할은 초건식과 실행문, 증감식에서 사용할 변수를 초기화하는 역할이다 초기화식이 필요없을 경우에는 초기화식 생략 가능 for문 예시 for(int i=1; i
[JAVA] 조건문-switch문
switch문 if문처럼 조건식이 true일 경우에 블록 내부의 실행문을 실행하는 것이 아니라, 변수가 어떤 값을 갖느냐에 따라 실행문이 선택된다 변수의 값에 따라서 실행문이 결정되기 때문에 같은 기능의 if문보다 코드가 간결하다 switch(변수){ case 값1: 실행문; break; case 값2: 실행문; break; ... default: 실행문; } 변수 값과 동일한 값을 갖는 case로 가서 실행문을 실행시킨다 변수 값과 동일한 값을 갖는 case가 없으면 default로 가서 실행문을 실행시킨다 default는 생략 가능하다 break는 다음 case를 실행하지 않고 switch문을 빠져나가기 위해 작성한다 int num=3; switch(num){ case 1: System.out.pri..