객체지향 프로그래밍의 4개의 기둥
상속 캡슐화 다형성 추상화 (상캡다추) 중에 상속과 캡슐화에대해 공부를 진행했다.
ㅇ 상속 **
기존 클래스를 재활용해 새로운 클래스를 작성하는 문법요소. 하위클래스는 상위클래스의 모든 요소 사용가능.
기존의 코드를 재사용해 보다 적은양이돼어서 코드의 중복을 제거 가능하다.
자식클래스명 extends 부모클래스명{
. . .
}
이름은 상속이지만 실제로는 extneds(확장)의 뜻에 더 가까움.
ㅇ 포함관계
ex)
public class Employee{
int id;
String name;
Address address;
. . . .
class Address{
String city, country;
. . . .
}
상속처럼 클래스를 재사용하는 방법이다. 클래스 멤버로 다른 클래스 타입의 참조변수를 선언하는 것이다.
실제로 객체지향 프로그램에서는 상속보다 이 방법이 더 많이 쓰인다고한다. 둘 중에 어떤 것을 사용할지는 어떻게 구분할까
'~는 ~이다(is-a)' 관계면 상속, '~는 ~를 갖고있다(has-a)'관계면 포함관계를 사용한다. ex) car extends SUV / Employee , Address
ㅇ 메서드 오버라이딩
부모클래스의 메서드를 재정의 하는것이다. 같은 이름을 여러개 가질 수 있는 오버로딩과 헷갈린다. 유의하자.
메서드 오버라이딩 조건 : 메서드의 선언부가 일치, 접근제어자의 범위는 같거나 넓어야함. final은 오버라이딩 불가. 예외는 같거나 적게.
ㅇ super, super() **
this는 자신의 객체, this()는 자신의 생성자 호출.
super는 상위클래스의 객체, super()는 부모의 생성자 호출.자식 클래스의 인스턴스 변수가 부모클래스의 변수의 이름과 같으면 super사용. super() 메서드도 맨윗줄에서 사용해야함.
ㅇ Object
Object클래스는 자바에서 모든 클래스의 조상클래스. 아무런 상속을 받지 않는 클래스는 자바에서 자동으로 extends Object를 추가해준다. Object클래스의 메서드는 toString, equals, hashCode, wait, notify 가 있다.
ㅇ 패키지
패키지는 특정 목적을 공유하는 클래스와 인터페이스의 묶음.
ㅇ Import문
다른 패키지에 있는 클래스를 사용할때 사용.
import 패키지명.클래스명; 또는 import 패키지명.*(해당패키지의 모든클래스 패키지명 없이 사용가능)
ㅇ 제어자
접근 제어자
기타 제어자
ㅇ 접근 제어자
캡슐화의 목적인 정보은닉을 가능하게 한다. 불필요한 노출 방지, 데이터가 임의로 변경되지 않게함.
private | 동일 클래스에서만 접근 가능 |
default | 동일 패키지 내에서만 접근 가능 |
protected | 동일 패키지 + 다른 패키지의 하위 클래스에서 접근 가능 |
public | 접근 제한 없음 |
접근제한 범위 : public > protected > default > private
ㅇgetter / setter **
객체지향의 캡슐화의 목적을 달성하면서도 데이터의 변경이 필요한 경우에 사용함.
private 변수에 접근해 값을 변경한다.
setter메서드는 외부에서 메서드를 접근해 조건에 맞을 경우 데이터 값을 변경 가능하게 해주고
getter메서드는 이렇게 설정한 변수 값을 읽어오는데 시용하는 메서드
'부트캠프 > 백' 카테고리의 다른 글
11.10 enum, 제네릭, 예외, 컬렉션 프레임워크 (0) | 2022.11.14 |
---|---|
11.8 다형성 추상화 (0) | 2022.11.09 |
11.4 생성자,this, this() (0) | 2022.11.07 |
11.2 배열 (0) | 2022.11.04 |
11.1 자바-조건문,반복문 (0) | 2022.11.01 |