다형성의 핵심다형적 참조메서드 오버라이딩다형적 참조: 다형적 참조는 부모는 자식을 참조할 수 있다. 다형성과 캐스팅캐스팅: 특정 타입으로 변경하는 것업 캐스팅(upcasting): 부모 타입으로 변경다운 캐스팅(downcasting): 자식 타입으로 변경 캐스팅의 종류일시적 다운 캐스팅((Child) poly).childMethod(); 참고 - 캐스팅을 한다고 해서 타입이 변하는 것은 아니다. 해당 참조값을 꺼내고 꺼낸 참조값이 캐스팅 타입이 되는 것이다. 업캐스팅객체를 생성하면 해당 타입의 상위 부모 타입이 모두 생성되기 때문에 업캐스팅하려는 타입이 모두 메모리에 존재하여 안전하다. 따라서 캐스팅을 생략 가능 A a = new C(): A로 업케스팅B b = new B(): B로 업스케팅C c = n..
전체 글
프로그래머로 거듭나는 발자취부모 클래스(슈퍼 클래스): 상속을 통해 자신의 필드와 메서드를 다른 클래스에 제공하는 클래스자식 클래스(서브 클래스): 부모 클래스로부터 필드와 메서드를 상속받는 클래스 상속과 메모리 구조상속 관계의 객체를 생성하면 그 내부에는 부모와 자식이 모두 생성된다.상속 관계의 객체를 호출할 때, 대상 타입을 정해야 한다. 이 때 호출자의 타입을 통해 대상 타입을 찾는다.현재 타입에서 기능을 찾지 못하면 상위 부모 타입으로 기능을 찾아서 실행한다. 기능을 찾지 못하면 컴파일 오류가 발생한다.상속과 메서드 오버라이딩메서드 오버라이딩(Overriding): 부모에게서 상속 받은 기능을 자식이 재정의 하는 것메서드 오버로딩: 메서드 이름이 같고 파라미터가 다른 메서드를 여러개 정의하는 것 메서드 오버라이딩 조건메서드..
자바 메모리 구조메서드 영역(Method Area): 메서드 영역은 프로그램을 실행하는데 필요한 공통 데이터를 관리한다. 이 영역은 프로그램의 모든 영역에서 공유한다.클래스 정보: 클래스의 실행 코드(바이트 코드), 필드, 메서드와 생성자 코드등 모든 실행 코드가 존재한다.static 영역: static 변수들을 보관한다. 런타임 상수 풀: 프로그램을 실행하는데 필요한 공통 리터럴 상수를 보관한다. 스택 영역(Stack Area): 자바 실행 시, 하나의 실행 스택이 생성된다. 각 스택 프레임은 지역 변수, 중간 연산 결과, 메서드 호출 정보 등을 포함한다. (쓰레드 수 만큼 스택 영역이 생성된다.)스택 프레임: 스택 영역에 쌓이는 네모 박스가 하나의 스택 프레임이다. 메서드를 호출할 때 마다 하나의 스..
패키지 규칙패키지의 이름과 위치는 폴더(디렉토리)위치과 같아야 한다.(필수)패키지 이름은 모두 소문자를 사용한다. (관례)패키지 이름의 앞 부분에는 일반적으로 회사의 도메인 이름을 거꾸로 사용한다. 예를 들어, com.company.myapp (관례)이 부분은 필수는 아니다. 하지만 수 많은 외부 라이브러리가 함께 사용되면 같은 패키지에 같은 클래스 이름이 존재할 수 도 있다. 이렇게 도메인 이름을 거꾸로 사용하면 이런 문제를 방지할 수 있다.내가 오픈 소스나 라이브러리를 만들어 외부에 제공한다면 곡 지키는 것이 좋다.내가 만든 애플리케이션을 다른 곳에 공유하지 않고, 직접 배포한다면 보통 문제가 ..
절차 지향 프로그래밍 vs 객체 지향 프로그래밍 절차 지향 프로그래밍절차(순서)를 지향한다.프로그램의 흐름을 순차적으로 따르며 처리하는 방식이다. 즉, "어떻게"를 중심으로 프로그래밍 한다. 객체 지향 프로그래밍객체를 지향한다. 실제 세계의 사물이나 사건을 객체로 보고, 이러한 객체들 간의 상호작용을 중심으로 프로그래밍 하는 방식이다. 즉 "무엇을" 중심으로 프로그래밍 한다. 둘의 중요한 차이절차 지향은 데이터와 해당 데이터에 대한 처리 방식이 분리되어 있다. 반면 객체 지향에서는 데이터와 그 데이터에 대한 행동(메서드)이 하나의 '객체'안에 함께 포함되어 있다. 객체속성: 데이터, 멤버 변수 기능: 메서드객체 지향의 특징은 속성과 기능을 하나로 묶는 것 뿐만 아니라 캡슐화, 상속, 다형..