CSE/JAVA(21)
-
[자바 객체 지향] 다형성
1. 오버라이딩과 오버로딩 - 다형성의 가장 기본은 오버라이딩과 오버로딩이다. - 오버라이딩 : 같은 메서드 이름, 같은 인자 목록으로 상위 클래스의 메서드를 재정의 - 오버 로딩 : 같은 메서드 이름, 다른 인자 목록으로 다수의 메서드를 중복 정의 2. 다형성과 T 메모리 public class Animal{ public String name; public void showName(){ Systen.out.println("안녕 나는 %s야. 반가위\n", name); } } public class Penguin extends Animal{ public String habitat; public void showHabitat(){ System.out.printf("%s는 %s에 살아\n", name, ha..
2021.08.05 -
[자바 객체 지향] 자바와 절차적/구조적 프로그래밍 2
1. 변수들과 T 메모리 스태틱 (Static) 영역 스택 (Stack) 영역 힙 (Heap) 영역 - 지역 변수 : 스택영역의 스택 프레임 안에 존재한다. 스택 프레임이 사라지면 함께 사라진다 - 클래스 멤버 변수 : 스태틱 영역에 위치한다. JVM이 종료될때까지 고정된 (static) 상태로 그 자리에 있다 - 객체 멤버 변수 : 힙 영역에 존재한다. 객체와 함께 힙 메모리 회수기에 의해 사라진다. 2. 지역변수와 메모리 - 외부 스택 프레임에서 내부 스택 프레임의 변수에 접근하는 것은 불가능하나 그 역은 가능하다. - 내부 스택 프레임 == if문 & 외부 스택 프레임 == main() 이라고 가정하고 생각해 볼 것 3. 메서드 호출과 메모리 - 메서드 호출이 일어나면 무조건 호출되는 메서드의 스택..
2021.07.30 -
[자바 객체 지향] 자바와 절차적/구조적 프로그래밍 1
* 해당 포스트는 '스프링 입문을 위한 자바 객체 지향의 원리와 이해'를 읽고 기억해야 할 중요한 것들만 정리한 내용임 1. 자바 프로그램의 개발과 구동 - JDK를 이용해 개발된 프로그램은 JRE에 의해 JVM상에서 구동된다. - JDK : Java Development Kit, 자바 개발 도구 - JRE : Java Runtime Environment, 자바 실행 환경 - JVM : Java Virtual Machine, 자바 가상 기계 - JDK가 JRE를 포함하고, 다시 JRE가 JVM을 포함하는 형태로 배포됨 - T 메모리 구조 코드 실행 영역 데이터 저장 영역 코드 실행 영역 스태틱 (Static) 영역 스택 (Stack) 영역 힙 (Heap) 영역 2. 자바에 존재하는 절차적/구조적 프로그래..
2021.07.26 -
06. Exception
* Exception(일반 예외) : 컴파일러 체크 예외 자바 소스를 컴파일하는 과정에서 예외 처리 코드가 필요하지 않음 일반 예외 클래스 : Exception을 상속받지만 Runtime Exception을 상속받지 않는 클래스 * Runtime Exception(실행 예외) : 컴파일하는 과정에서 예외 처리 코드를 검사하지 않는 예외 개발자의 경헝메 의해서 예외 처리 코드를 삽입해야 함 실행 예외 클래스 : Exception, Runtime Exception을 상속받는 클래스 NullPointerException : 객체 참조가 없는 상태, null값을 갖는 참조 변수로 객체 접근 연산자인 도트(.)를 사용했을 때 발생 ArrayIndexOutOfBoundsException : 배열에서 인덱스 범위를 ..
2020.01.20 -
05. Anonymous Inner Class
* 익명 객체(Anonymous Inner Class) : 이름이 없는 객체를 말함 단독으로 생성할 수 없고 클래스를 상속 or 인터페이스를 구현해야만 생성할 수 있음 =>한 번 쓰고 버릴 것. method override 후, 바로 도트로 사용까지 함 => 주로 interface나 abstract class에서 사용됨 * 익명 자식 객체 생성 : 클래스 상속 시 class Parent{ void method(){...} } public class AnonymousExample{ Parent parent = new Parent(){//익명 자식 객체 생성 int childField;//필드 => 외부에서 접근 불가능 void childMethod(){...}//메소드 => 외부에서 접근 불가능 @Over..
2020.01.19 -
04. Nested Class, Nested Interface
* 중첩 클래스(Nested Class) : 클래스 내부에 선언한 클래스 => 코드의 복잡성을 줄일 수 있음 => But, 코드가 장황해질 수 있고, 가독성이 떨어질 수 있음 * 인스턴스 멤버 클래스 : 인스턴스 필드와 메소드만 선언 가능 정적 필드와 메소드는 선언 불가능 바깥 클래스 외부에서 인스턴스 멤버 클래스의 객체를 생성하기 위해서는 먼저 바깥 클래스 객체를 생성하고 인스턴스 멤버 클래스의 객체를 생성해야 함 + 인스턴스 멤버 클래스의 안에서는 바깥 클래스의 모든 필드와 모든 메소드에 접근 가능 class Out{ class In{//인스턴스 멤버 클래스 In(){...}//생성자 int field;//인스턴스 필드 void method(){...}//인스턴스 메소드 } } public class..
2020.01.19