다형성

객체 지향 언어에서 다형성이란 하나의 클래스나 메서드가 다양한 방식으로 동작이 가능 한 것을 의미
다형성에는 오버로딩과 오버라이딩이 있음

오버라이딩

오버라이딩이란 상위 클래스를 상속받는 하위 클래스가 상위 클래스의 메서드를 사용하지 않고
하위 클래스에서 재정의하여 사용하는 것을 의미합니다
용도에 맞게 재정의해 사용하기 위해 아래 같이 인터페이스를 구성 ( 회원관리 예제 내용 中 )
// 요청 처리 규격을 정의(인터페이스)
// 다형성 지원을 위해 사용
// 몸체가 없는 메서드 정의
public interface Action {

    Scanner sc = new Scanner(System.in);

    void execute(Scanner sc);

}
excute() 라는 메서드를 통해 새롭게 재정의해 용도에 맞게 쓰기위해 아래 같이 생성
// 회원 가입 요청을 처리해 주는 클래스 
// 기능을 구현하기 위한 클래스
public class AddAction implements Action {

    @Override
    public void execute(Scanner sc) {
        System.out.println("회원정보 입력>");
        System.out.println("이름>");
        String name = sc.next();
        System.out.println("나이>");
        int age = sc.nextInt();
        System.out.println("전화번호>");
        String tel = sc.next();
        System.out.println("이메일>");
        String email = sc.next();
        System.out.println("국가>");
        String nation = sc.next();

        MemberVo member = new MemberVo(age, name, tel, email, nation);

        int m = MemberMain.members.length; // 
        MemberVo[] temp = new MemberVo[m + 1];
        for(int i=0;i<m;i++) {
            temp[i]=MemberMain.members[i];
        }
        temp[m] = member;
        MemberMain.members = temp;
    }
}

오버로딩

오버로딩은 같은 메서드 이름으로 다양한 입력에 대해서 처리 할 수 있도록 합니다
같은 메서드일지라도 인자값에 따라(해당 타입에 따라) 다르게 처리함
public class OverLodingTest {

    public static void main(String[] args) {
        Add();
        Add(5, 7);
        Add(4, 5, 6);
    }
    public static void Add() {
        System.out.println("인자값없는 Add");
    }
    public static void Add(int a, int b) {
        System.out.println("a + b = "+(a+b));
    }
    public static void Add(int a, int b, int c) {
        System.out.println("a + b + c = "+(a+b+c));
    }
}

캡슐화

캡슐화는 안전과 보안에 관련된 내용
접근지정자를 통해 보여지는 부분과 숨겨지는 부분을 구분할 수 있음
객체가 어떤 작업을 수행하는지 보여 줄 수 있지만 그 안에 세부 방식에 대해서는 숨김이 가능
자바 접근지정자
  • public

    공개 정도가 가장 높고 어느 위치에서도 접근이 가능
  • private

    동일한 클래스에서만 접근이 가능
  • protected

    다른 패키지에 존재하는 외부 클래스에서는 접근이 불가능
  • default

    같은 패키지 내에서만 접근이 가능 접근 지정을 하지 않으면 자동적으로 default로 지정

+ Recent posts