Steady Blog

7.상속과 다형성 본문

Programing/Java

7.상속과 다형성

우유먹고쑥 2012. 8. 23. 11:04

*상속과 다형성

 1. 클래스의 상속 개념

 ㄱ. 상속을 주기 위해 준비된 특정 클래스

    - Base Class(기본 클래스)

    - Super Class(슈퍼 클래스)

    - Parent Class(부모 클래스)

  ㄴ. 특정 클래스로부터 상속을 받아 새롭게 정의되는 클래스

    - Derivation Class(유도 클래스)

    - Sub Class(하위 클래스)

    - Child Class(자식 클래스)

 

상속의 개념과 중요성

   - 부모가 보유하고 있는 재산 중 일부를 자식이 물려받는 것을 의미한다. 자바에서는 이런 클래스들간의 다중 상속을 지원하지 않으므로 객체의 명확성을 높였다.

 

클래스 상속의 정의 법

   - 자바에서 얘기하는 상속이라는 것은 특정 클래스가 가지는 일부 속성과 기능을 다른 새로운 클래스에게 제공하기 위해 맺는 클래스들간의 관계를 말한다. 이는 Super클래스를 새로운 Sub클래스에서 [extends]라는 예약어를 사용하여 서로 관계를 맺은 상태이다.

 

클래스 상속의 중요성

   - 클래스 상속은 객체의 재사용이라는 장점뿐만 아니라 코드의 간결성을 제공해 주는 객체지향적 언어의 장점과 중요한 특징이 된다. 그러므로 잘 정의된 super클래스가 있다면 sub클래스의 작성이 간편해지고 무엇보다 개발 시간이 단축된다는데 상속의 중요성과 장점을 들수 있다.

 


 

ex_)

class CellPhone{
  String model;
  String number;
  int chard;
  public void setNumber{String n}{ number = n;}
  public String getModel(){return model;}
  public int getChard(){return chard;}
  public String getNumber(){return number;}

}
public class MP3Phone extends CellPhone{  // extends를 통해서 Cellphone을 상속 받음
 int size;
 public MP3Phone(String model, String num, int chard, int size){
  this.model = model;
  number = num;
  this.chard = chard;
  this.size = size;
 }
}


 

 2. 오버라이딩

 오버라이딩은 [메소드 재정의]라고도 불리며 이는 서로 상속관계로 이루어진 객체들간의 관계에서 비롯딘다.

super클래스가 가지는 메소드를 sub클래스에서 똑같은 것을 새롭게 만들게 되면 더이상 super클래스의 이름이 같은 메소드를 호출할 수 없게 된다. 이를 OverRiding이라 하고 또는 맴버 은폐라고도 한다.

 

※ 주의점

 1. 자손클래스에서 오버라이딩하는 메서드는 조상클래스의 메서드이름, 매개변수,리턴타입이 같아야 함

 2.접근제한자는 더 넓게 지정해야함

 

 

 

 

 

 3. Object 클래스

- 모든 클래스의 super클래스(배열을 제외하고 상속 받음)

- extends라는 키워드를 쓰지 않음.

  ex) import java.iang.*과 같이 내부적으로 선언되어 있음.

 - 주요 메서드

 

 


 

이쯤 되면 해시코드가 무엇인지 궁금할텐데

 

해시코드(Hash Code)

 - 객체가 가지는 유일한 값으로써, 객체의 ID에 해당하는 것이며 해시함수의 출력비트 문자열로 표현된다.

해시 값(Hash Values)

 - 해시 값은 특정 바이트 집합에 해당하는 고유 값을 나타냅니다. 해시 값은 이름, 버전 또는 기타 지정 값을 참조하는 대신 어셈블리를 명확하게 지정합니다. 매우 드물지만 이름을 사용하면 전혀 다른 코드에 같은 이름이 지정된 경우 충돌할 수 있습니다.

또한, 코드의 다른 버전을 실수로 같은 같은 버전으로 표시할 수 있습니다. 하지만 한 비트만 변경해도 매우 다른 해시 값이 나타납니다.

해시 같은 디지털 서명을 사용하지 않고 정책에서 특정 어셈블리를 참조하는, 암호를 통해 보호되는 안전한 방법입니다.

보안 해시 알고리즘은 실수나 악의적인 목적으로 동일한 해시 값을 갖는 서로 다른 어셈블리를 생성할 수 없도록 설계되었습니다. 기복적으로 SHA1 및 MD5 해시 알고리즘의 증명 정보가 지원되지만 GenerateHash를 통해 원하는 해시 알고리즘을 사용할 수 있습니다.

해시 함수(메소드)

컴퓨터 암호화 기술의 일종, 요약 함수 혹은 메시지 다이제스트 함수(message digest function)라고도 한다. 주어진 원문에서 고정된 길이의 의사난수를 생성하는 연산 기법이다. 생성된 값은 '해시값'이라고 한다.

 

통신회선을 통해서 데이터를 주고 받을 때, 경로의 양쪽 끝에서 데이터의 해시값을 구해서, 보낸 쪽과 받은 쪽의 값을 비교 하면 데이터를 주고 받는 도중에 여기에 변경이 가해졌는지 어떤지를 알 수 있다.

불가역적인 일방향함수를 포함하고 있기 때문에 해시 값에서 원문을 재현 할 수는 없다. 또한 같은 해시 값을 가진 다른 데이터를 작성하는 것도 극히 어렵다. 이런 특성을 이용해서 통신의 암호화 보조수단이나 사용자 인증, 디지털 서명등에 응용되고 있다.

일방향 함수란 함정문함수(trap door function)라고도 하는 것으로, 제수에서  결과를 구하는 것은 간단하지만, 결과에서 제수를 구하는것이 어려운 함수를 말한다.

 

-출처 : msdn, nobody is perfect-


 

 

 

 

 

'Programing > Java' 카테고리의 다른 글

9. 이너클래스와 열거형 - 정리 필요  (0) 2012.08.23
8. 추상클래스와 인터페이스 - 내용부실  (0) 2012.08.23
6. 클래스의 개념  (0) 2012.08.23
5. 배열 - 코딩 할것 많음  (0) 2012.08.23
4. 제어문  (0) 2012.08.23