1. 상속(Inheritance)
상속은 클래스간의 불필요한 중복을 막아준다.
Super/Parent/Base Class <- Sub/Child/Derived Class
-> 서브클래스는 수퍼클래스를 사용한다! / 주의 : 수퍼 클래스에서 서브클래스의 필드나 메소드는 사용하지 못함!
-> 포함관계로 따지면 서브클래스는 수퍼클래스를 포함한다.
상속시에는 extends를 사용한다.
ex) class subClass extends SuperClass
-> 기능적으로 생각하면 서브 클래스는 슈퍼 클래스에 필요한 필드와 메소드를 추가한 것
2. 상속 관계의 정의(is-a 관계)
ex1) 1 은 자연수 이다.
이때 자연수는 수퍼 클래스, 1은 서브클래스
ex2) 사람은 동물이다.
cf) 사람은 이름을 갖는다.(has-a 관계)
사람과 이름은 상속관계가 될 수 없음.
3. 접근 지정자
슈퍼 클래스에서 사용한다.
슈퍼 클래스를 상속받은 서브 클래스들이 슈퍼 클래스의 필드나 메소드를 마음껏 사용하도록 만듬.
-> 즉, 상속받지 않은 서브 클래스들은 사용하지 못함.
4. OverLoading / OverRiding
OverLoading - 같은 클래스 내에서 메소드 명이 같고 시그니처만 다른 메소드를 정의 하는것을 의미
OverRiding - 서브 클래스(상속 받음)에서 슈퍼 클래스내의 이미 정의된 메소드를 다시 정의하는 것
-> 이 경우 슈퍼 클래스에 있는 메소드와 동일한 시그니처를 가져야 한다.
-> 슈퍼 클래스의 메소드는 Public/Protected로 선언되어 있어야 한다.
-> signature(맞나?) 메소드의 매개변수 종류/위치/순서 등을 표현
5. 변수명이 같은 변수를 호출했다!
무엇이 불려올지 모르겠다면 일단 답은 가까운데서 정의된 변수이다.
이를 구분하기 위해서 this. 라던지 super. 를 사용한다. (dot(.)도 포함이다.)
6. 클래스 생성시 주의할 점?
기본적으로 디폴트 생성자를 만들어 주자.(아직까지는)
그래야 명시적이던 묵시적이던 사용할 수 있다.
7. Object안의 주로 사용하는 메소드
API(http://docs.oracle.com/javase/7/docs/api/)를 참조하자.
protected Object clone() - 스미스 요원마냥 복사본 생성.... 지금 생각해보니 메트릭스에서 스미스 요원이 이걸썻....?!
public boolean equals(Object obj) - obj 가 이 객체와 같은지 나타냄.
나머진 api참조!
8. 오늘의 키워드
상속 : extends / overriding (/ overloading) / protected / supper
배열.... 상속을 배우고 문제를 풀어보는데...
이대로 될까 싶다... ㅡ.ㅜ
아직 오버라이딩 개념이 명확하게 서질 않는다.
라고 쓰니까 먼가 떠올라서 다시 문제를 풀어야겠다...하지만!
그전에..
집에가서 밥이나 먹어야겠다.
댓글 없음:
댓글 쓰기