Backend/Do it 자바 완전 정복 강의 12

12장 추상 클래스와 인터페이스

12.1 추상클래스 (abstract class)- 클래스이며 인터페이스일 수는 없다.- 추상클래스는 class 앞에 abstract가 붙은 class를 의미한다.- 추상매서드는 추상적인 매서드 즉, 구체적인 정의가 없는 매서드이다. (미완성 매서드 의미)- 인터페이스는 매서드가 모두 100% 추상매서드 여야한다. 또한 모든 매서드가 static final이여야하고, 접근지정자가 public 이여야한다.- 일반 클래스는 객체를 생성할 수 있다. (붕어빵 객체 생성 가능)- 추상 클래스와 인터페이스는 그러나 붕어빵을 생성할 수 없는데 왜 사용할까? 뒤에서 설명함  - 하나도 안가지고 있어도 추상클래스로 정의할 수 있을까? => 정의해도 되고 정의 안해도된다.- 하지만 멀쩡한 클래스에 abstract 붙일 ..

11장 자바 제어자 - final, abstract

11.1 자바 제어자(modifier) #2 (final, abstract)- final은 1) 필드/지역변수 앞에  2) 메서드 앞에 3) 클래스 앞에 붙는다.- final은 생성자 안에서라도 꼭 마지막으로 초기화를 해줘야한다. (3번)- final이 필드이든 지역변수이든 지정된 값을 바꿀 수 없다.- 모든 지역변수들은 stack 메모리에 생성 - 파이널 변수들은 생성될 때 파이널 영역에 복사되어 생성된다. (힙-필드이든 스택-지이든)- 값을 바꿀 수 없는 이유는 값이 처음 들어간 순간에 (선언되는 순간) 1번 복사되기 때문에 그 순간 이후에는 값을 바꿀 수 없게 만드는 것. (원본을 바꿀 수 있다면 복사본은 쓸모없어지기 때문이다.)- final 메서드는 마지막 메서드라는 의미이므로 override가 ..

10장 클래스의 상속과 다형성

10-1. 클래스의 상속- 생성자는 상속 받지 않는다.- 부모에게 상속 화살표를 향한다.- 가장 중요한 장점은 다형적 표현이 가능하다는 것이다. ★ ★ ★- 학생은 사람이다. 그러나 사람은 학생이다 (x) 불가능하다.- A의 모든 기능은 C가 가능하다.  (화살표 방향으로 읽으면 모두 성립한다.) (화살표를 거스른다면 불가능하다.)- 다형적 표현은 하나의 객체를 두고 여러 의미로 부를 수 있는 것이 다형적 이다.- 배열의 2가지 특징 1) 동일한 타입만 저장 2) 크기 고정- 상속은 상위 클래스인 부모클래스를 정의해서 나머지 하위 자식들을 포함하자. - 부모 클래스를 정의하면 하위 클래스를 관리할 수 있다. (객체를 관리하기 편해진다.)- 상속 = 다형적 - 다중 상속을 받으면, 모호성이 생기기 때문에 ..

09장 자바 제어자 - 접근 지정자와 static

9-1. 자바제어자(modifier) #1 접근제어자- 멤버에 붙는 4가지 접근지정자가 존재.- 아무것도 붙이지 않으면 int c 처럼 defualt를 접근지정자만 지정한 것이다.- defualt 접근지정자와 package 접근지정자와 동일한 말- 같은 패키지에 있으면 defualt는 모든 클래스에서 사용 가능 => 그러니까 package 접근지정자라고 하는 것이다.- extends 는 상속을 의미한다.- 클래스의 접근지정자는 2가지 밖에 안된 다는 것을 기억하자.- 생성자 같은 경우 컴파일러가 자동으로 추가하기 때문에 따로 생성자의 접근지정자라고 공부하는 것- 클래스의 접근지정자와 동일하게 생성자가 생성된다. (그렇다면 defualt와 public일것 => class가 두가지 밖에 안됨으로)- 클래스 ..

08장 클래스 외부 구성 요소

8-1. 외부구성요소 (패키지, 임포트, 외부클래스)- 패키지마다 이름 공간 생성 ★ ★ ★- 다른패키지의 클래스 사용하려면 항상 패키지명.클래스명 즉, full name을 사용해야한다는 것을 기억.- import는 패키지 코드 다음에 와야한다. (여러개 가능)- import는 다른 패키지의 클래스를 내 패키지의 클래스인것 마냥 쓰겠다는 의미이다.- public이 붙어야 다른 패키지에서 접근할 수 있다. (접근지정자라고 함)- abc.bcd.cde 라는 구조가 있다고하면 abc.bcd.*를 해도 cde 아래 파일들을 다 임포트하는 것이 아니라 bcd 아래에 있는 파일만 임포트한다. cde 파일을 임포트하려면 abc.bcd.cde.*를 해야한다. - 외부 클래스에서는 절대 public이 붙을 수 없다.=>..

07장 클래스 내부 구성 요소

7-1.내부구성요소 필드 - 필드와 지역변수를 구분하기- void work2 (int i)에서 i 또한 work2 메서드에서 실행되는 것이기 때문에 지역변수이다.- 메서드 별로 프레임이 존재하기 때문에 각 메서드 안에 같은 변수를 사용해도 문제가 되지 않는다. 7-2. 내부구성요소 메서드 - 리턴타입, 메서드 이름 () {} 는 필수이다. 입력매개변수는 옵션이다.- public과 static은 수식어이다. - 반환값이 없다면 void를 설정하여 리턴하지 않게 한다. (실행하지 않는 것이 아니라, 실행은 하되 결과값을 리턴하지 않는다는 것)- 매개변수에서 선언과 값을 분리해서 실행된다. (배열에서는 다른 값을 초래할 수 있기 때문에 이렇게 알아두자)- static 안에서는 static만 호출이 가능하다.-..

06장 클래스와 객체

6-1. 클래스의 기본 개념 및 객체 생성과 활용- 자바는 시작부터 클래스이다. - 절차지향형은 '순서' 대로 하겠다는 의미- 객체지향형은 '객체'를 중심으로 프로그램을 짠다는 의미이다.- 프로그램이 클 수록 객체지향형이 더 유리하다. - 클래스와 인터페이스는 상반대이다. (즉, 동반할 수 없다.)- 인터페이스는 안에 들어간 것이 어떤 타입인지 이미 저장되있는 것 (지정되어있.) - 클래스 밖에 올 수 있는 3가지와, 안에 올 수 있는 4가지를 꼭 기억해야한다.- package는 폴더를 의미. - class 밖에 class 여러개 있을 수 있다. => public을 붙일 수 없다. (public 붙인 class는 파일 명과 동일해야한다.)- class {} 내부에 생성된 변수를 필드이고, 메서드 안에 생..

05장 참조 자료형

5-1. 배열-1차원 배열 (특징, 선언과 객체생성, 메모리구조, 값입출력)- 참조자료형 (무한개) : 배열, 열거, 클래스/인터페이스- 대표적인 참조자료형이 배열과 String이다.- 배열의 크기를 지정하면 변경불가하다! - int와  int 배열은 다르다. (배열은 참조자료형이다.)-  null은 참조변수 값의 초기값이다. 즉, 0, -1, 1과 같은 값을 집어 넣는 것이 아니라, 가리키는 객체가 없다는 것을 의미하는 null로 초기값을 설정해야한다. - new 의미는 heap 메모리에 객체(int [3]를 저장할 수 있는 방 3개)를 만들어서 넣어라 라는 의미이다.- 두번째 특징은 객체 생성시 개수가 지정되어야 한다. => 즉, new double[5] 처럼 개수 지정- stack은 강제 초기화가 ..

04 제어문과 제어키워드

4-1.제어문의 개요 및 선택제어문 (if, switch)- 제어의 의미는 프로그램 실행 순서를 제어하는 것을 의미한다.- 제어문은 5가지, 제어 키워드는 2가지가 존재한다.- 중괄호의 생략 의미는 결국 컴파일러에 의해 삽입이 된다. (그러나, 실행문이 1개인 경우이므로 실행문이 2개들어가면 첫번째 실행문만 제어문이 {}안에 포괄하고 있는 것이다.- 조건식에는 꼭, true 와 false만 올 수 있다는 것을 기억하자.- if와 else 는 꼭 하나이고, else if는 여러개 가능하다.- ★ 참이 나오는 순간 바로 실행문 출력후 조건문을 종료한다. (즉, 조건문이 동시에 true, true가 나올수 없다.) Tip- (70 - (70 =70 && a - switch의 역할은 특정 위치로 점프 시키는 역..

03장 연산자

3-1. 연산자1 (산술,증감,비트,쉬프트 연산자) - %(모듈러) 는 나머지를 의미한다.- 증감연산자는 1 값을 증가, 감소를 의미한다.- 전위와 후위의 차이는 실행순서의 차이이다. => 전위는 실행순서가 1등이고, 후위는 실행순서 꼴등이다. - 등호는 다른 연산자와 함께 쓸 때 무조건 뒤에 온다. => += 인것- 비트연산자란 2진수 연산을 수행하는 것을 의미한다.- &은 and, |는 or, ^는 xor, ~는 not을 의미한다.- 2진수로 바꾸는 함수는 Integer.toBinaryString(data)- 8진수로 바꾸는 함수는 Integer.toOctalString(data)- 16진수로 바꾸는 함수는 Integer.toHexString(data)- 10진수로 바꾸는 함수는 Integer.par..