날아라쩡글이의 블로그입니다.

객체 지향 2 본문

java (학원 전) story

객체 지향 2

날아라쩡글이 2021. 3. 25. 06:08
728x90
반응형

1.상속

-기존의클래스를 재사용하여 새로운 클래스를 작성하는 것.

<이전의 클래스 정의를 하지 않아도 가능한이유

= 자동으로 11개의 메서드를 포함한 Object클래스를 컴파일러가 실행했기때문.>

상속이란 : 부모와 자식관계를 일컬음 , 조상, 자손관계 

-자손은 조상의 클래스를 '생성자 ,초기화'를 제외한 모든 것을 상속받는다. .

- 그렇기 때문에 조상보다 메서드가 많거나 동일하다. (절대 적지않다)

조상에게 받은 class 5개 + 자손 class 2개

2. 포함 

다른 클래스의 참조 변수를 선언 하는 것을 의미한다. 

-상속관계는 ~은~이다.

꼭 필요시에 사용되기 때문에 드물다. 

-포함관계는 ~ 은 ~ 을 가지고 있다.

90%이상은 포함관계의 형태를 가지고 있다.

 

3. 단일 상속 : 비중 높은 클래스 하나만 상속관계이며, 나머지는 포함관계를 가진다.

java의 경우 다중상속을 하지않아도 인터페이스를 이용해 해결할수있다.

4.Object클래스 - 모든 클래스의 조상 

-앞서 설명한것처럼 상속을 따로 설정하지 않은 class의 경우 object를 extends했다고 할수있다. 

즉 object는 모든 클래스들의 조상이며, 11개의 메서드를 기본적으로 가지고 있다. 

toString();이나 equals(object o)를 따로 정의하지않고 사용할수있던 이유는 이 메서드들이 object클래스에 정의된 것들이기 때문이다. 

5.오버라이딩 = 오버로딩과 완전 다름.:메서드 오버라이딩이라고 불림

-조상의 메서드를 자신에게 맞게 변경함 :오버라이딩 

-선언문은 변경이 불가하며, 구현부에 대해서 변경이 가능하다. 조상의 내용을 변경하는 것이기 때문.

<1.선언부가 조상 클래스의 메서드와 일치하여야한다. 

2. 접근제어자를 조상 클래스의 메서드보다 좁은 범위로 변경할 수 없다.

접근제어자,default이 오타나있다!  

3. 예외는 조상 클래스의 메서드보다 많이 선언할 수 없다.

자손의 메서드를 추가시킨 오버라이딩 

오버로딩 - 한클래스내의 같은 이름의 메서드를 여러개를 정의하는 것 . 과적하다.

오버로딩 

오버로딩과 오버라이딩을 구분할 수 있어야한다. 

4. 참조변수 super (조상) this (자손) 

super = 자손클래스에서 조상클래스부터 상속받은 맴버를 참조하는데 사용되는 참조변수이다. 

super mom, this 자손
결과값

만약 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
Comments