Java 7

자바가 확장한 객체 지향

이제 객체 지향 4대 특성을 넘어 자바가 객체 지향을 확장하기 위해 사용하는 키워드와 개념을 살펴보자. 01_ abstract 키워드 _ 추상 메서드와 추상 클래스 -동물 타입의 참조 변수를 통해 하위 클래스의 인스턴스가 가진 aaa() 메서드를 호출하고 있으니 상위 클래스인 동물의 aaa() 메서드는 반드시 존재해야 한다. 그런데 실수로 동물 클래스의 인스턴스를 만들고 그렇게 만들어진 동물 객체의 aaa() 메서드를 호출하면 난감해진다. 바로 이런 경우 추상 메서드를 사용하게 된다. 메서드 선언은 있으되 몸체는 없는 형태로 메서드를 구현하는것이다.   - 아래는 추상 클래스를 사용한 예제이다.1. 동물 객체는 어떻게 울어야 하지? / 누가 실수로 동물 객체를 만들면 어떡하지?2. 동물 참조 변수 배열로..

Java 2024.05.04

자바와 객체 지향(캡슐화 : 정보 은닉)

-자바에서 정보 은닉(information hiding)이라고 하면 접근 제어자인 private, [default], protected, pulibc이 생각날 것이다. 접근 제어자가 객체 멤버(인스턴트 멤버)와 쓰일 때와 정적 멤버(클래스 멤버)와 함께 쓰일 때를 비교해서 살펴보자. pubic 모두가 접근 가능protected상속 / 같은 패키지 내의 클래스에서 접근 가능[default]같은 패키지 내의 클래스에서 접근 가능private본인만 접근 가능  01_ 객체 멤버의 접근 제어자- 너무 당연한 이야기지만 자신의 멤버가 아닌 다른 객체의 멤버에 접근하는 경우에는 다른 객체를 생성한 후 접근해야 한다.1. 상속을 받지 않았다면 객체 멤버는 객체를 생성한 후 객체 참조 변수를 이용해접근해야 한다.2, ..

Java 2024.05.04

자바와 객체 지향 (다형성 : 사용편의성)

객체 지향에서 다형성이라고 하면 오버라이딩(overriding)과 오버로딩(overloading) 이라고 할 수 있다. 01_ 오버라이딩? 오버로딩?- 오버라이딩 : 같은 메서드 이름, 같은 인자 목록으로 상위 클래스의 멧드를 재정의- 오버로딩 : 같은 메서드 이름, 다른 인자 목록으로 다수의 메서드를 중복 정의  02_다형성과 T 메모리상위 클래스 타입의 객체 참조 변수를 사용하더라도 하위 클래스에서 오버라이딩(재정의)한 메서드가 호출된다는 사실을 기억하자.  03_다형성이 지원되지 않는 언어오버로딩은 함수명 하나를 가지고 인자 목록만 달리하면 되니 얼마나 사용하기 편리한지 알 수 있다.특히 자바 5에서 추가된 제네릭을 이용하면 하나의 함수만 구현해도 다수의 함수를 구현한 효과를 낼 수 있다.

Java 2024.05.04

자바와 객체 지향 (상속 : 재사용 + 확장)

01_ 상속 : 재사용 + 확장- 객체 지향의 상속은 재사용과 확장으로 이해하는 것이 맞다. 객체 지향에서의 상속은 상위 클래스의 특성을 하위 클래스에서 상속(특성 상속)하고 거기에 더해 필요한 특성을 추가, 즉 확장해서 사용할 수 있다는 의미다.  - 상속 관계에서 반드시 만족해야 할 문장이 있다."하위 클래스는 상위 클래스다." - 자바 언어에서는 inheritance(상속)라는 키워드는 존재하지 않는다. 대신 extends(확장)가 존재한다.  02_ 상속의 강력함- 객체 참조 변수는 결국 객체를 참조하게 되는데 객체의 특성은 유일무이한 것이다. 클래스명은 클래스답게, 객체 참조 변수명은 객체답게 지어야 한다. 조금 더 풀어 설명하자면 클래스명은 분류스럽게, 객체 참조명은 유일무이한 사물처럼 작명해..

Java 2024.05.04

자바와 객체 지향 (추상화 : 모델링)

01_ 객체 지향은 인간 지향이다객체 지향 이전에는 속성과 메서드를 객체라는 단위로 묶지 않고 속성(필드) 따로, 메서드(함수) 따로 분리된 형태로 프로그램을 작성했었는데, 객체 지향에서는 우리가 주변에서 실제 사물을 인지 및 사과는 방식대로 객체 단위의 프로그래밍이 가능하다. 객체 지향은 인간의 인지 및 사고 방식까지 프로그래밍에 접복하는 인간(개발자) 지향을 실천하고 있는 것이다. 그래서 객체 지향은 직관적이다.  02_ 객체 지향의 4대 특성 - 캡! 상추다캡 - 캡슐화(Encapsulation) : 정보 은닉(Information hiding)상 - 상속 : 재사용추 - 추상화(Abstraction) : 모델링다 - 다형성(Polymorphism) : 사용 편의 03_ 클래스 vs 객체 = 붕어빵..

Java 2024.05.04

자바와 절차적 / 구조적 프로그래밍 (6-11)

06_ 지역 변수와 메모리 : 스택 프레임에 갇혔어요 !- 앞선 글의 "변수! 너 어디있니?" 에 대한 답변은 "변수는 메모리에 있다"이다. 변수는 스태틱 영역, 스택 영역, 힙 영역 '세 군데 모두'에 있다. 그런데 세 군데 각각에 있는 변수는 각기 다른 목적을 가진다. 그리고 각각의 이름도 지역 변수, 클래스 멤버 변수, 객체 멤버 변수로 다르다.  - 지역 변수는 스택 영역에서 일생을 보낸다. 스택 프레임 안에서 일생을 보내게 된다. 따라서 스택 프레임이 사라지면 함꼐 사라진다. - 클래스 멤버 변수는 스태틱 영역에서 일생을 보낸다. 스태틱 영역에 한 번 자리 잡으면 JVM이 종료될 때까지 고정된(static) 상태로 그 자리를 지킨다.  - 객체 멤버 변수는 힙에서 일생을 보낸다. 객체 멤버 변수..

Java 2024.05.04

자바와 절차적 / 구조적 프로그래밍 (01 - 05)

01_자바 프로그램의 개발과 구동 - JVM(Java Virtual Machine)의 존재와 역할을 아는 것이 자바 개발 환경을 이해하는 데 필수적이다. JVM은 이름 그대로 가상기계다. 현실 세계에서 컴퓨터를 구동하기 위해서는 물리적 컴퓨터인 하드웨어와 운영체제, 그리고 그 위에서 구동될 소프트 웨어가 필요하다. 거기에 더해 소프트웨어를 개발할 수 있는 개발도구가 필요하다. 자바의 가상 세계는 이러한 현실 세계를 그대로 모방하고 있다. 현실세계가상 세계(자바월드)소프트웨어 개발 도구JDK - 자바 개발 도구JVM용 소프트웨어 개발 도구운영 체제JRE - 자바 실행 환경JVM용 OS하드 웨어 - 물리적 컴퓨터JVM- 자바 가상 기계가상의 컴퓨터 현실 세계에서 소프트웨어, 즉 프로그램은 개발자가 개발 도구..

Java 2024.05.04