목록java (29)
ki-sd 님의 블로그
클래스 간의 엄격한 계약을 정의하는 인터페이스와, 프로그램의 비정상적인 종료를 막는 예외 처리의 첫걸음을 뗐다. 1. 인터페이스(Interface)를 통한 협업 규격 설계추상 클래스보다 한 단계 더 높은 극단적인 추상화를 제공한다. 내부에는 오직 상수(public static final)와 추상 메서드(public abstract)만 가질 수 있다.자바는 클래스의 다중 상속을 금지하지만, 인터페이스는 implements 키워드를 통해 여러 개를 동시에 구현할 수 있다.실무적 의의: 여러 명의 개발자가 협업할 때, "이 기능은 반드시 이런 이름과 매개변수를 가진 메서드로 만들어라"라는 상호 간의 엄격한 계약서 역할을 함을 확인했다.2. 예외 처리(try-catch)의 필요성문법적인 오류(Compile Er..
객체 지향 프로그래밍의 대미를 장식하는 가장 어렵지만 가장 강력한 무기, 다형성의 본질을 이해하고 추상화의 개념을 정립했다. 1. 다형성: 하나의 코드가 다양한 형태로 동작하는 원리업캐스팅(Upcasting): 자식 객체를 생성할 때, 이를 가리키는 리모컨(참조 변수)의 타입을 자식이 아닌 부모 타입으로 설정할 수 있다. (예: Animal a = new Dog();)동적 바인딩(Dynamic Binding): 부모 타입의 참조 변수로 오버라이딩된 메서드를 호출하면, 컴파일러는 부모의 메서드를 호출하는 것처럼 보이지만 실제 프로그램 실행(Runtime) 시점에는 힙 메모리에 생성된 자식의 재정의된 메서드가 실행된다.이를 통해 각기 다른 수많은 자식 객체들을 '부모 타입 배열' 하나로 묶어서 관리하거나, ..
기존 클래스의 자산을 물려받아 새로운 클래스를 빠르고 안전하게 구축하는 객체 지향의 확장 기법을 학습했다. 1. 상속(extends)의 메커니즘과 메모리 구조자식 클래스가 부모 클래스를 extends 키워드로 상속받으면, 부모가 가진 필드와 메서드를 자신의 것처럼 자유롭게 사용할 수 있다. 이는 중복 코드를 극적으로 줄이고 개발 시간을 단축하는 강력한 도구다.메모리 구조의 비밀: 자식 객체를 new로 생성할 때, 힙(Heap) 메모리에는 자식 객체만 덩그러니 생기는 것이 아니다. 부모 객체가 먼저 내부에 생성된 후 자식 객체가 그 주변을 감싸는 형태로 생성된다. 이를 제어하기 위해 자식 생성자의 첫 줄에는 항상 부모의 기본 생성자를 호출하는 super()가 생략되어 있다는 사실을 확인했다.2. 메서드 오..
객체 지향의 4대 핵심 특징 중 첫 번째인 '캡슐화'를 학습하며, 데이터를 은닉하는 것이 시스템의 안정성에 어떤 영향을 미치는지 깨달았다. 1. 접근 지정자(Access Modifier)의 통제력 클래스와 멤버에 대한 외부 접근을 제한하는 네 가지 보안 단계를 확립했다.private: 오직 같은 클래스 내부에서만 접근 가능 (가장 강력한 은닉).(default): 같은 패키지 내에서만 접근 가능 (접근 지정자를 생략했을 때).protected: 같은 패키지는 물론, 다른 패키지라도 상속 관계인 자식 클래스에서는 접근 가능.public: 패키지나 상속 관계에 상관없이 어디서든 자유롭게 접근 가능.2. 데이터 은닉화(Data Hiding)의 실전 적용외부에서 객체의 변수(필드)에 직접 객체.변수 = 값 형태..
객체가 메모리에 태어나는 순간을 제어하는 생성자와, 메서드 간에 데이터를 주고받는 방식의 이면에 숨겨진 메모리 동작을 파고들었다. 1. 생성자(Constructor)의 역할과 오버로딩생성자: new 키워드로 객체를 생성할 때 가장 먼저 호출되어, 인스턴스 변수들의 값을 초기화하는 특별한 메서드다. 클래스 이름과 동일해야 하며 반환 타입이 존재하지 않는다.개발자가 생성자를 하나도 작성하지 않으면 컴파일러가 빈 껍데기인 '기본 생성자(Default Constructor)'를 몰래 넣어주지만, 매개변수가 있는 생성자를 단 하나라도 작성하면 기본 생성자는 자동 생성되지 않는다는 중요한 규칙을 확인했다.생성자 오버로딩(Overloading): 매개변수의 개수나 타입을 다르게 하여 여러 개의 생성자를 정의함으로써,..
데이터와 기능을 하나의 캡슐로 묶어 관리하는 객체 지향 프로그래밍(Object-Oriented Programming)의 세계로 본격 진입했다. 1. 클래스(Class)와 인스턴스(Instance)클래스: 특정 사물이나 시스템의 속성(변수)과 동작(메서드)을 추상화하여 정의한 '설계도' 또는 '틀'이다.객체(인스턴스): 클래스라는 설계도를 바탕으로 메모리의 힙(Heap) 영역에 실체화된 데이터 덩어리다.프로그램을 수많은 독립적인 객체들의 상호작용으로 바라보는 패러다임의 전환을 경험했다.2. 변수의 종류와 초기화 메커니즘클래스 내부에서의 선언 위치와 static 여부에 따라 변수의 성격이 완전히 달라진다.지역 변수(Local Variable): 메서드 안에서 선언되며 스택에 저장된다. 사용하기 전 반드시 개..
