날아라쩡글이의 블로그입니다.
객체 지향 2 본문
1.상속
-기존의클래스를 재사용하여 새로운 클래스를 작성하는 것.
<이전의 클래스 정의를 하지 않아도 가능한이유
= 자동으로 11개의 메서드를 포함한 Object클래스를 컴파일러가 실행했기때문.>
상속이란 : 부모와 자식관계를 일컬음 , 조상, 자손관계
-자손은 조상의 클래스를 '생성자 ,초기화'를 제외한 모든 것을 상속받는다. .
- 그렇기 때문에 조상보다 메서드가 많거나 동일하다. (절대 적지않다)
2. 포함
다른 클래스의 참조 변수를 선언 하는 것을 의미한다.
-상속관계는 ~은~이다.
꼭 필요시에 사용되기 때문에 드물다.
-포함관계는 ~ 은 ~ 을 가지고 있다.
90%이상은 포함관계의 형태를 가지고 있다.
3. 단일 상속 : 비중 높은 클래스 하나만 상속관계이며, 나머지는 포함관계를 가진다.
java의 경우 다중상속을 하지않아도 인터페이스를 이용해 해결할수있다.
4.Object클래스 - 모든 클래스의 조상
-앞서 설명한것처럼 상속을 따로 설정하지 않은 class의 경우 object를 extends했다고 할수있다.
즉 object는 모든 클래스들의 조상이며, 11개의 메서드를 기본적으로 가지고 있다.
toString();이나 equals(object o)를 따로 정의하지않고 사용할수있던 이유는 이 메서드들이 object클래스에 정의된 것들이기 때문이다.
5.오버라이딩 = 오버로딩과 완전 다름.:메서드 오버라이딩이라고 불림
-조상의 메서드를 자신에게 맞게 변경함 :오버라이딩
-선언문은 변경이 불가하며, 구현부에 대해서 변경이 가능하다. 조상의 내용을 변경하는 것이기 때문.
<1.선언부가 조상 클래스의 메서드와 일치하여야한다.
2. 접근제어자를 조상 클래스의 메서드보다 좁은 범위로 변경할 수 없다.
3. 예외는 조상 클래스의 메서드보다 많이 선언할 수 없다.
오버로딩 - 한클래스내의 같은 이름의 메서드를 여러개를 정의하는 것 . 과적하다.
오버로딩과 오버라이딩을 구분할 수 있어야한다.
4. 참조변수 super (조상) this (자손)
super = 자손클래스에서 조상클래스부터 상속받은 맴버를 참조하는데 사용되는 참조변수이다.
만약 this 칭하는게 없다면 비혼주의이기 때문에 super, this 모두
스스로를 칭할 수 있다.
5. super () = 조상의 생성자
this()처럼 super()도 생성자이다.
this()는 같은 클래스이 다른 생성자를 호출하는데 사용되었지만 super()는 조상의 생성자를 호출하는데 사용된다.
-앞서 상속시의 조상에게 생성자와 초기화블록은 제외하고 상속이 된다고 하였다.
그렇기 때문에 조상의 생성자를 호출하는데 사용이된다.
1. this 와 동일하게 생성자 첫줄에 super생성자를 호출하여야 한다.
2.그렇지않으면 컴파일러가 자동으로 첫줄에 super()을 삽입한다.
6. 패키지 -클래스들끼리 그룹별로 묶어놓은 것을 의미한다.
7. import문 :package라고 일일히 명칭을 붙이기에는 불편한 일이기 때문에 impoort문 미리 명시한다면, 클래스 이름에서 패키지 명을 생략할수있다. < CTRL+SHIFT+O >를 누르면 자동으로 import문을 추가해준다.
import 패키지명.클래스명; || import.패키지명.*; 으로 선언할 수 있다.
이와같이
8. static import 문도 함께 사용하면 static맴버를 호출할 때 클래스의 이름을 생략할 수 있다.
system 과 math를 import static문에 삽입하여 생략후 출력하였다.
9.제어자
접근제어자
같은클래스 | 같은 패키지 <class옆에작성가능> |
같은패키지+다른패키지자손 | 공통의,모두가 <class옆에작성가능> |
private | default, 빈칸 | protected | public |
그외 :static , final, abstract,....나중에 다시 작성
10.static - 클래스의, 공통의
클래스 변수 앞에 static를 적듯이 공통의 뜻을 가진다.
제어자 |
맴버변수 | -모든인스턴스에 공통적으로 사용되는 클래스변수가 된다. 클래스 변수는 인스턴스를 생성하지않고도 사용 가능 -클래스가 메모리에 로딩될때 생성 |
static | 메서드 | -인스턴스를 생성하지 않고도 호출이 가능한 static 메서드가 된다. -static메서드 내에선 인스턴스 멤버들을 직접 사용할 수 없다. |
11.final -마지막의, 변경될 수 없는 (상수로 선언할 때 사용)
-거의 모든 대상에 사용하게 된다. 변수에 적용시 : 상수 , 메서드에 적용시 오버라이딩 불가, 클래스에 사용시 자신을 확장하는 자손클래스를 정의하지 못 한다.
12. abstract - 추상의 , 미완성의
-메서드의 선언부만 작성하고, 실제수행내용은 구현하지 않은 추상메서드를 선언
abstract class AbstractTest{
abstract void move();
}
'미완성 설계도'로 인스턴스 생성이 불가하다.
13. 접근제어자 (앞에서 설명함)
14. 캡슐화와 접근제어자 -외부로부터 데이터를 보호하기 위함, 외부에는 불필요한, 내부적으로만 사용되는 부분을 감추기위함
private 을 이용하면 같은 클래스 외에는 보지 못하기 때문에 개인 보안에 좋다.
'get' 맴버변수를 읽는 부분, 'set' 맴버변수의 값을 변경하는 부분으로 사용된다. 'get맴버변수의이름'으로 쓰인다.
15. 다형성 = A의 extends의 B는 A의 메서드를 사용할 수 있는 다형성을 가지고 있다. 자손class는 조상의 class의 메서드를 사용할수있다는 뜻 (but, 자손 class 리모컨은 조상의 class을 조종 x)
조상 class 의 리모컨 (4개) = 자손에서 조상에게 받은 메서드만 사용가능 (4개)
자손 class 의 리모컨 (6개) = 조상에게 받은 메서드에 비해 양이 많아 조상 class에 사용 불가능 (4개)
자손 class 의 리모컨 (6개) = 자손과 조상에게 받은 메서드 전부 사용가능 (6개)
16. 참조변수의 형변환 = 참조변수는 상속관계에서의 형변환이 가능하다. 형제관계는 안됨
조상의 타입을 자손 타입으로 형변환하는 경우에는 형변환 값이 생략 불가능 하다.
17.instanceof 연산자 : 형변환이 가능한지 확인하기 위한 연산자
instanceof의 결과값은 boolean값과 동일하게 true와 false를 결과 값으로 낸다.
연산의 결과가 true일경우 형변환이 가능하다는 것을 의미한다.
18. 매개변수의 다형성
-참조변수의 다형성과 동일하게 매개변수도 다형성을 가진다.
그래서 고객등장 부분처럼 사용이 될 수 있다.
'java (학원 전) story' 카테고리의 다른 글
VScode 로 java시행하는 방법 (0) | 2021.08.02 |
---|---|
객체지향 2 이어서 (0) | 2021.04.02 |
객체지향언어1(이어서) (0) | 2021.03.21 |
객체 지향 언어 1 (0) | 2021.03.19 |
1주차 java공부 요약 (0) | 2021.03.01 |