본문 바로가기

전체 글104

다형성 다형성의 정의 객체지향적 개념 하나의 객체가 여러가지 형태(타입)를 가질 수 있는 능력 자바 한 타입의 참조변수로 여러 타입의 객체를 참조할 수 있도록 함 특징 조상클래스 타입의 참조변수로 자손 클래스의 인스턴스를 참조할 수 있다. 같은 타입의 인스턴스일지라도, 참조 변수의 타입에 따라 사용할 수 있는 멤버의 개수가 달라진다. 자손클래스 타입의 참조변수로 조상 클래스의 인스턴스를 참조할 수 없다. 조상 클래스에는 존재하지 않는 멤버를 사용할 가능성이 있으므로 컴파일 에러가 발생한다. (= 참조 변수가 사용할 수 있는 멤버의 개수가 실제 인스턴스의 멤버 개수보다 작거나 같아야한다.) 참조변수의 다형성 방법 : 괄호 안에 변환하고자 하는 클래스명(타입의 이름) 명시 조건 : 서로 상속 관계에 있는 클래스 사.. 2023. 4. 4.
제어자 제어자의 정의 클래스, 변수 또는 메서드의 선언부에 사용되어 부가적인 의미 부여 크게 접근 제어자와 그 외 제어자로 나눌 수 있다. 접근 제어자는 두 개 이상 같이 사용할 수 없으나, 기타 제어자는 조합에 따라 여러개를 함께 사용할 수 있다. (한 선언부에 접근 제어자는 하나, 그 외 제어자는 여러개) 정의 멤버 또는 클래스에 사용되며, 해당하는 멤버 또는 클래스를 외부에서 접근할 때 제한해주는 역할 사용 장소 클래스 멤버 변수 생성자 사용 이유 외부로부터 데이터를 보호하기 위해서 (정보은닉, 캡슐화) 외부에서 사용하지 않는 내부적으로만 사용되는 부분을 감춰 복잡성을 줄이기 위해서 종류 public 접근 제한이 없는 상태 protected 같은 패키지와 다른 패키지의 자손클래스에서 접근 가능 (defau.. 2023. 4. 4.
메서드 오버라이딩(Overriding) 우린 부모님 말을 잘 듣기도 하지만, 때로는 새롭게 정의해서 듣기도 한다. 자바에서도 마찬가지이다. 부모 클래스가 이미 정의한 메소드를 자식 클래스가 같은 시그니쳐를 유지한 채, 새로운 메서드로 다시 정의하는 경우를 보곤한다. 우리는 이것을 “메서드 오버라이딩”이라고 부른다. 메서드 오버라이딩의 정의 조상클래스로부터 상속받은 메서드의 내용을 변경하는 것 메서드 오버라이딩의 장점 자식 클래스가 부모클래스와 다르게 동작하길 바라는 경우, 필요한 동작을 재정의할 수 있다. 메서드 오버라이딩의 조건 메서드의 이름이 같아야한다 매개변수가 같아야한다 반환타입이 같아야한다 → 즉, 시그니쳐(선언부)가 같아야한다. 왜냐하면 오버라이딩은 메소드의 동작만을 재정의하는 것이기 때문이다. 메서드 오버라이딩의 주의사항 접근 제.. 2023. 4. 4.
메서드 오버로딩 (Overloading) 한 클래스 내에서 메서드는 각기 다른 이름을 가져야한다. 변수와 마찬가지로 같은 클래스 내에서 서로 구별할 수 있어야하기 때문이다. 그럼 같은 일을 하지만 매개 변수가 다른 경우마다, 계속 새로운 이름을 붙여야하는 걸까? 25년된 철학관의 작명가도 이름짓다가 지칠 것이다. 그런 경우를 대비해서 사용되는 개념이 메서드 오버로딩이다. 메서드 오버로딩의 정의 한 클래스 내에서 같은 이름의 메서드를 여러개 정의하는 것 매개 변수의 개수 또는 타입이 다른 경우 같은 이름을 사용하여 메서드 정의 가능 메서드 오버로딩의 조건 매서드 이름이 같아야한다. 매개변수의 개수 또는 타입이 달라야한다. (= 매개변수에 의해서만 구별된다.) 오버로딩 구현 불가능한 경우 매개변수의 이름만 다른 경우 (변수의 이름만 다른 경우 정확.. 2023. 4. 3.
클래스와 인스턴스 객체 지향 이론의 관점 소프트웨어 객체는 현실 객체를 모방한 것이 아니라 은유를 기반으로 재창조한 것이다. 현실 객체 : 객체 은유 : 클래스 소프트웨어 객체 : 인스턴스 객체 사전적 정의 : 실제로 존재하는 것 “존재하는 것”은 사물 뿐만이 아니라 개념도 포함한다. 객체는 속성과 기능의 집합이다. 일반적으로 객체는 다수의 속성과 다수의 기능을 갖는다. 객체가 가지고 있는 속성과 기능을 그 객체의 멤버라고 한다. 객체의 속성 (property) = 멤버변수, 특성, 필드, 상태 객체의 기능 (function) = 메서드, 함수, 행위 클래스 정의 객체를 프로그램상에서 정의한 것 그렇기 때문에 클래스에는 객체의 모든 속성과 기능이 정의되어있다. 객체의 설계도 또는 틀 소프트웨어 객체는 클래스를 통해 생성되.. 2023. 4. 3.