목차 1. 동적 바인딩 2. 다형성 EX1 ) 오버라이딩 EX2 ) 업캐스팅 EX3 ) 배열에 다형성 적용하기 3. 메서드에 다형성 활용 4. 총정리 📍 동적 바인딩 – 상속 관계에서 업캐스팅 후 메서드를 호출할 때, 컴파일(번역) 단계에서의 실행 대상과 실제 실행 단계에서의 실행 대상이 달라진 것. – 참조변수의 타입과 무관하게 '실제 인스턴스'의 메서드를 실행하게 됨. – 업캐스팅 시 일어나는 동적바인딩은 ctrl + click으로 해당 메서드의 출처를 알기가 힘듬. 원래라면 참조하고 있던 메모리가 없어졌으므로 에러가 나야하는데 Java가 에러 안나게끔 길을 바꿔준 것. EX ) • 클래스 생성하기 class Parent{ public void parentPrn() { System.out.printl..

목차 0. JAVA 프로그램 실행 과정 1. static 키워드 1-1. static 변수 1-2. static 메서드 1-3. static 멤버와 인스턴스 멤버의 메모리 할당 순서 2. 싱글톤 디자인 패턴 (Singleton Design Pattern) 📍 JAVA 프로그램 실행 과정 0. 소스 코드 작성 및 컴파일 후 클래스 실행 → .java파일을 만들어서 javac라는 명령어로 컴파일 1. 클래스 로딩 → static변수 및 메서드가 먼저 메모리에 로딩됨. 2. main() 메서드 호출 (실행) 3. 인스턴스 생성 → 인스턴스 변수(= field = 멤버변수) 및 메서드가 메모리에 로딩됨. 4. 참조변수를 통해 인스턴스 메서드 호출 (실행) → 로컬 변수가 메모리에 로딩됨. 5. 결과 출력 6. ..
📍 this 키워드 – 자신의 인스턴스 주소값을 저장하는 참조 변수. → 개발자가 생성하는 것이 아니라 Java에 의해 자동으로 생성됨. – 모든 인스턴스 내에는 this가 존재하며, 자신의 인스턴스 주소가 저장됨. → 즉, 인스턴스 마다 this에 저장된 값이 다름. ▶ 레퍼런스 this( ) – 자신의 인스턴스 내의 멤버에 접근 (멤버변수 or 멤버메서드) – 주로, 로컬변수와 인스턴스(멤버) 변수의 이름이 같을 때, 인스턴스 변수를 지정하는 용도로 사용. → this키워드가 붙은건 해당 클래스의 멤버를 뜻함. ▸ 기본 문법 this.인스턴스 변수 this.메서드( ) – 자신의 클래스 내의 생성자 또는 메서드 내에서 위와 같은 형태로 접근. – 로컬변수와 멤버변수를 구별하기 위해서, 멤버변수 앞에 ..
📍 값 전달 방식에 따른 차이 (Pass by) – 메서드 호출 시 값 전달 방식에 따른 차이. – 메서드 파라미터로 기본 데이터타입과 참조 데이터타입 전달 시 차이. → 메서드를 호출하여 값을 전달할 경우, 값의 복사가 일어남. 1. Pass by value (값에 의한 전달) – 메서드 호출 시, 기본 데이터타입 데이터 전달하는 경우 → 실제 값(실제 데이터)을 복사해서 전달. – 호출된 메서드 내에서 전달받은 값(복사한 데이터)을 변경해도 원본 데이터는 아무런 이상이 없음. ex ) 도서관에서 ebook으로 책을 빌림. 형광팬 그어도 복사본이므로 다른사람이 빌렸을 때 형광팬 표시가 없음. 2. Pass by reference (참조에 의한 전달) – 메서드 호출 시 참조 데이터타입 데이터 전달하는 ..
📍 가변 인자 (Variable Arguments, VARARGS) – 비정형 인자. – 메서드 파라미터를 하나의 인자만 사용하여 다양하게 전달받는 기능. – 동일한 타입의 파라미터를 0개 ~ 무한대로 전달받아 배열로 관리. → 전달받는 인자(데이터)의 개수에 따라 자동으로 배열 생성됨. – 주의! 다른 파라미터와 가변 인자를 조합 가능하나 마지막 파라미터로 단 한 번만 지정 가능하며, 2개 이상 올 수 없음. ▸ 기본 문법 public void add (int... nums) { } – 메서드 파라미터(매개변수) 선언 시, 데이터 타입 뒤에 ... 기호를 표기. ex ) 가변 인자를 사용한 메서드 대표적인 예 : print() 메서드 System.out.println (String str, Object..
📍 메서드 오버로딩 (Method Overloading) – 파라미터는 다르고 이름은 동일한 메서드를 여러번 정의하는 것. – 비슷한 기능을 수행하지만 전달받은 데이터의 타입이 다른 경우, 메서드 이름을 따로 정의하지 않고 동일한 이름으로 파라미터만으로 구분되는 메서드를 여러개 정의하는 것. – 주의! 메서드 시그니처(이름 / 리턴타입 / 파라미터 / 접근제한자)중 파라미터를 제외한 나머지는 동일하게 정의함. → 외부에서 메서드를 호출하는 시점에 이름이 동일한 메서드 간에 전달되는 데이터(파라미터)만으로 각 메서드가 구분되어야 함. ▸ 메서드 오버로딩 규칙 (택 1) 1. 메서드 파라미터의 데이터타입이 달라야 함. 2. 메서드 파라미터의 개수가 달라야 함. (파라미터가 없는 메서드도 해당) EX ) • ..
📍 기본 생성자 – 클래스를 사용하여 인스턴스를 생성할 때 호출되는 메서드의 형태. → new 키워드 뒤에 생성자 호출 코드가 기술됨. ex ) Animal ani = new Animal(); – 인스턴스 변수를 초기화하는 용도 또는 인스턴스 생성 시 초기에 수행할 작업을 기술하는 용도. – 접근제한자가 클래스와 같으며, 매개변수가 없고, 주괄호 블록{ }내에 수행할 코드가 없음. – 메서드와 형태가 유사하나 차이점 두 가지 존재함. 1 ) 선언부에 리턴타입이 없음. → 리턴타입이 없다기 보다 정확하게는 리턴타입 자체를 기술하지 않음, 아예 존재하지 않음.) 2 ) 생성자 이름이 클래스 이름과 동일. – 개발자가 클래스 정의 시 생성자를 하나도 정의하지 않으면, 컴파일러에 의해 자동으로 기본(Defaul..

📍 배열 (Array) – 같은 타입 데이터 여러 개를 하나의 묶음(변수)으로 다루는 메모리 공간. ▶ 특징 – 같은 타입 데이터만 저장 가능함. – 여러 변수에 해당하는 메모리 공간이 연속된 공간에 차례대로 생성됨. – 한 번 생성된 배열은 크기 변경 불가능! – 기본 데이터타입과 참조 데이터타입 모두 배열로 사용 가능. – 배열은 선언, 생성, 초기화의 3단계 과정을 거쳐서 사용함. – 배열 생성 시, 각 공간에 해당하는 인덱스(번호)가 자동으로 부여됨. → 0부터 시작하여 (배열크기 -1)까지 부여됨. – 배열의 이름(변수명)을 사용하여 배열에 접근 가능. (인덱스 필요) – 배열의 크기는 배열명.length 속성을 통해 알아낼 수 있음. – 배열이 생성될 경우, 배열의 데이터 저장 공간은 배열의 ..
- Total
- Today
- Yesterday
- 논리형
- 오버라이딩
- 숫자형
- Git
- JSTL
- 다형성
- Method
- 인자
- jsp
- 업캐스팅
- 로컬저장소
- gitbash
- null
- 매개변수
- 주석문
- mysql
- github
- Java
- 내장객체
- Dao
- javascript
- 원격저장소
- model2
- 단일행함수
- Object
- 문자형
- 출력문
- DB
- 데이터타입
- 제어문
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |