BigData 청년인재 프로그램(Java) - 10. 객체지향 특징

10. 객체지향 특징

6/28(수)Day03
-4가지 특징 : 추상화(Class, interface), 캡슐화(public, private) 
상속(extends,implements), 다형성(Override,Overload)
<1. 캡슐화=Encapsulation>
-데이터(필드)+행위(메서드) = 클래스
-실제 구현내부 은닉
-접근제한자(public)으로 속성과 메서드내부 접근 제한

<2. 상속성=Inheritance>
2.1 상속의 개념
-A is a B, A는 B를 상속받는다, class A extends B
-소스코드의 중복감소
-Java는 다중상속x, 단일상속o, 다중 인터페이스 구현o

2.2 super
-부모객체를 가리키는 참조변수
-자식객체는 부모객체를 생성후->자식객체 생성
-필드사용x, 생성자나 인스턴스 메소드에서 사용o
-가리키는 객체는 runtime시 결정됨
-코드 안쓸때 : 묵시적 부모 클래스 생성자 호출 ->super();
-코드 쓸때 : 명시적 부모 클래스 생성자 호출 ->반드시 자식 생성자 첫 출에 위치
-부모생성자가 없다면(매개변수 있는 생성자) 컴파일 오류

<3. 다형성=Polymrphism>
-같은이름을 갖는 메소드, 다른 참조변수를 가지는 메소드
-Overload(중복정의) : 동일class 또는 상속관계, 매개변수의(개수, 순서, 타입)이 다르다
-Override(재정의) : 상속관계, 매개변수의(개수, 순서, 타입)이 같다
3.1 오버로드(Overload)
-동일한 이름의 메서드지만 매개변수가 다른 여러 메서드를 만드는 것
-조건 : 메서드이름이 같다 + 파라미터의 (개수, 순서, 자료형)이 다르다.
#파라미터의 형태가 같고 + 반환형이 다른것은 오버로드가 아님.

3.2 오버라이드(Override)
-슈퍼Class에서 정의한 메서드를 서브Class에서 재정의하는것
-새롭게 변경된 내용이 있을때 사용.
-조건 : 메서드이름+파라미터의 (개수, 순서, 자료형)이 같다 + 리턴타입이 같다(중요)

3.3 Polymrophic Variable & Ardument
3.3.1 자동형변환
-부모클래스 참조변수 = 자식클래스 참조변수 : 자동형변환
-동적 바인딩(수행시 new로 객체를 생성하고 형변환한다)
Student s = new Student(); // s는 자식 참조변수
Object o = s; // 자식참조변수(주소를) 부모참조변수(주소로) assign

Object o = new Student(); //1줄표현
Object o = (Object)new Student(); //1줄표현 생략된 형변환 연산자(Object) 

3.3.2 강제형변환
-자식클래스 참조변수 = (자식클래스)부모클래스 참조변수 : 강제형변환
-부모 타입을 자식 타입으로 변환하는 것
-자식 타입을 부모 타입으로 자동변환-> 다시 부모타입으로 형변환만 가능하다.
Student s = (Student)new Object();
#부모객체를 먼저 생성->자식객체로 강제형변환 불가능(동적바인딩 에러 : ClassCastException)
# system.out.println(형변환할 참조변수 instanceof 자료형); 가 true일때만 형변환한다.

3.3.3 Wrapper 클래스
-기본형->기본형 가능 // 참조형->참조형 가능(상속됐을때)
-기본형->참조형(Wrapper클래스) : static메소드로 접근 ex) Integer.parseInt(String s)

<4. 사용제어자=Usage Modifier>
4.1 static
-클래스멤버 = 클래스 멤버변수(필드)+클래스 메소드
-JDA(JavaDataArea)중 메서드 영역에 존재, loader에서 메모리 할당
-instance 멤버 선언 vs class 멤머 선언
-필드 : 객체마다 가지고있을 데이터(변수) vs 클래스가 공용할 데이터(상수)
-메서드 : 인스턴스 필드를 가지고 작업 vs 인스턴스 필드를 가지고 작업x
-static은 기울임글꼴
#static은 필드와 메서드에만 사용 가능(class, 지역변수x)
#final은 필드(상수), 메서드(수정불가), 클래스(상속불가)에 모두가능
#abstract는 클래스(추상class), 메서드(추상메서드)aks rksmd

4.2 final
-한번 초기화하면 수정불가
-static과 함께 사용(상수) static final Sitrng NAME="초기값";

4.3 abstract
-abstract메서드 : 선언부분만 있고 구현부분이 없는 메서드
-abstract클래스 : 추상메서드가 하나라도 있는 클래스
-abstract는 오직 상속때문에만 사용 -> abstract 메서드는 무조건 재정의를 통해 사용
-new()로 객체생성 불가능.->abstract 생성자 불가능
-final abstract불가능 why? : final은 상속불가, abstract는 무조건 상속해야함

댓글

이 블로그의 인기 게시물

1장_1절 관계형 데이터베이스 개요

2장_1절. 표준 조인(Standard Join)

BigData 청년인재 프로그램(Java) - 11. 추상 클래스와 인터페이스