본문 바로가기

JAVA/혼공자

(26)
[혼공자] Chapter. 07-1 상속 07-1 상속 ⭐클래스간의 관계가 생명인 객체지향 프로그래밍에서 굉장히 중요한 부분!!⭐ ▶ 상속이란❓ 부모 클래스의 필드, 메소드를 자식 클래스에서 사용할 수 있게 하는 것 → 기존 클래스에 기능을 추가하거나 재정의하여 새로운 클래스를 정의하는 것 ▶ 상속의 장점 - 코드 재사용 - 부모 클래스를 수정하면 자식 클래스의 해당 부분도 일괄 수정되므로 유지 보수에 좋음 ▶ 상속의 방법 자식이 부모를 선택함 -> 클래스 선언문 뒤에 extends 작성 ▶ 상속의 특징 여러 부모를 상속할 수 없음 부모 클래스의 private 멤버는 상속 불가, 다른 패키지라면 default 멤버도 상속 불가 protected와 public 멤버만 상속 가능 cf. 정확히 말하자면 private과 default는 상속은 받되 ..
[혼공자] Chapter 06-4~6 메소드, 인스턴스 멤버, 패키지와 접근 제한자 06-4 메소드 자바에서 메소드의 선언 방법은 여느 프로그래밍 언어에서의 메소드 선언 방법과 비슷하다. 리턴타입 메소드이름 (매개변수타입 매개변수) { 실행문 } ex. int add(int a, int b) { return a+b; } * 메소드 이름의 길이는 실행 속도나 메모리와는 무관하니 가독성을 위해 길게 줘도 괜찮음 클래스 안에서 선언한 메소드는 dot연산자와 ( )를 이용해 호출할 수 있다. Ex. Car.setNumber(9101); ▶ 매개 변수의 개수를 모르는 경우 => 어찌보면 당연한 소리지만 기발한 아이디어 같아 정리함 매개변수의 개수를 모르는 경우, Step 1 : 일단 메소드의 매개변수를 배열 형태로 선언한 다음 Step 2 : 전달할 변수를 배열로 만들어서 메소드에 전달하면 됨 ..
[혼공자] Chapter 06-1~3 객체 지향 프로그래밍, 생성자 06-1 객체 지향 프로그래밍 ▶ 객체란? 쉽게 말하면, 속성을 가지고 있는 무언가 어렵게 말하면, 속성(필드)과 기능(메소드)이 묶인 프로그램 단위. 처음 객체지향 프로그래밍을 배울 때 예시로 들었던 자동차를 생각하면 쉽다. 자동차의 색이라는 속성, 움직이는 기능이 있기 때문에 자동차를 객체로서 다룰 수 있는 것이다. Q. 왜 자바에서는 필드 & 메소드라고 해요..? C++에서는 멤버 변수 & 멤버 함수 아니었음? A. 두 표현 다 맞는데 아무래도 자바에서는 '필드', '메소드' 라는 단어를 쓰는 것 같음. 같은 의미이니 그냥 그러려니 하고 넘어가자! ▶ 객체 지향 프로그래밍이란? 완성품 객체를 모델링하기 위해 부품 객체들을 '조립'하는 것 cf. 잘 조립하는 방법 - 객체를 잘 설계해야함 (인터페이스..
[혼공자] Chapter 05-3 열거 타입 05-3 열거타입 * enumerate : 열거하다 열거 타입 = 전에 C++에서도 배웠던 enum / 열거형, 열거체 로도 불림 ❗ 열거타입 이것만 기억하자 ❗ - 집합인 '열거 타입'와 그 안의 '열거 상수'로 구성됨 - 열거 타입을 자료형으로 갖는 변수를 선언할 수 있음 - 열거 타입의 변수에는 열거 상수만 들어갈 수 있음 - 장점 : 비슷한 것들끼리 묶어둠 & 가독성 좋아짐 cf. 특히 switch문에서 열거 상수를 사용하면 가독성 좋아짐 public class EnumTest { public static void main(String[] args) { Week today = Week.FRIDAY; switch(today){ case MONDAY: System.out.println("월요일입니다...
[혼공자] Chapter 05-2 배열 파이썬이나 JS 같이 호락호락한 배열을 생각했다면 오산이다 05-2 배열 ▶ 배열 주의사항 - 배열은 같은 타입의 데이터만 저장 가능 (선언과 동시에 저장할 수 있는 타입이 결정됨) - 한 번 생성된 배열은 길이를 바꿀 수 없음 ▶ 배열 선언 방법 대괄호를 타입 옆 or 이름 옆에 붙여 선언할 수 있다. ① int[ ] intArray; ② int intArray[ ]; 우리가 항상 썼던 main(String[] args)도 배열! => 이걸로 외우면 쉬울 듯! (( 책에서 직접 언급은 안했지만 전자를 더 자주 쓰는 것 같음 )) ▶ 배열 초기화 ※ 원소들을 { }로 감싸고 있는 것 주의! ※ ① 선언과 동시에 초기화 int[ ] scores = { 83, 90, 87 }; ② 선언 당시에는 null, ..
[혼공자] Chapter 05-1 참조 타입과 변수 05-1 참조 타입과 변수 ▶ 참조 타입 이름의 의미 기본 타입은 변수에 실제 값을 저장하지만, 참조 타입은 변수에 '메모리 주소'를 저장한다. 주소를 통해 객체를 참조한다는 뜻에서 '참조' 타입이라 부른다. ▶ 참조 타입(reference type)의 종류 배열 타입, 열거 타입, 클래스, 인터페이스 (String은 클래스에 속함) int는 소문자로 쓰고 String은 대문자로 쓰는 이유도 타입이 기본 vs 참조로 다르기 때문!😯 ⭐JVM의 메모리 사용 영역⭐ cf. JVM == 자바 가상 머신 / 하나의 컴퓨터라고 생각하면 됨 메소드 영역(Method Area) - 클래스의 정보가 저장되는 공간 - JVM이 시작할 때 생성되고 모든 스레드가 공유하는 영역 - 자바는 특정 클래스가 사용되면 해당 클래스..
[혼공자] Chapter 04. 조건문과 반복 04-1 조건문 : if문, switch문 ▶ if문 VS switch문 공통점 : 조건문 차이점 : if문은 괄호 안 조건식의 t/f에 따라 명령문을 선택하고, switch문은 괄호 안의 '값'에 따라 명령문을 선택함. if문은 따로 break가 필요 없지만, switch문은 해당되는 case를 찾고 이후 break가 없으면 다음 case들은 값과 상관없이 실행됨 (fallthrough) (일단은 초보니까 이걸 어떻게 활용할까 생각하지 말고, break를 안쓰면 오류가 난다고 생각하고 있자.) break문, 문법, 익숙하지 않음 때문에 switch를 안쓰는 경향이 있는데 (특히 내가) 실무에서는 가독성 때문에 많이 쓴다고 함 => 그러니까 지금부터라도 많이 쓰려고 연습하자..@ 참고 : 실무에서 사용되..
[혼공자] Chapter 03. 연산자 03-1 연산자와 연산식 ▶ 연산자 우선순위 거의 헷갈릴 일 없을거고 정 헷갈리면 괄호를 쓰면 됨 03-2 연산자의 종류 ▶ 전위 & 후위 연산 전위 : 바로 +or-1 후위 : 해당 라인 다 처리하고 이후에 +or-1 이'전', 이'후'로 기억하면 편함 int x = 5, y = 5; int a, b; a = ++x; b = y--; System.out.printf("x = %d, y = %d, a = %d, b = %d", x,y,a,b); // x = 6, y = 4, a = 6, b = 5 ▶ 문자열 & 정수의 결합 문자열과 정수의 결합 연산은 + 를 통해서 이뤄짐 ※ 주의 - 문자열을 나중에 붙이면 앞에 산수가 된 후에 문자열 결합이 일어남 ※ "JDK" + 3 + 3.0 => "JDK33.0"..