코드스테이츠 BE 13일차 - Java 객체지향 프로그래밍 심화 상속, 캡슐화

coding infant·2022년 8월 4일

코드스테이츠BE

목록 보기
13/48

학습 목표

  • 상위 클래스-하위 클래스의 상속 관계의 핵심을 이해하고, 그 장점을 설명할 수 있다.

  • extend키워드를 사용하여 두 개 이상의 클래스 간 상속 관계를 정의할 수 있다.

  • 포함관계와 상속관계의 차이를 설명할 수 있다.

  • 상속 관계에서 사용할 수 있는 메서드 오버라이딩의 정의, 성립 조건, 장점을 이해하고 이를 활용할 수 있다.

  • super와 super() 의 차이를 설명할 수 있다.

  • Object 클래스가 자바 클래스의 상속계층도에서 최상단에 위치한다는 사실을 이해할 수 있다.

객체지향 (캡!상추다)

  1. 상속

  2. 캡슐화

  3. 추상화

  4. 다형성 ( 하나의 객체가 여러 모양으로 표현될 수 있는 것)

[상속]

상위(super) 클래스 멤버를 하위(surb) 클래스에 내려 주는 것

extends : 확장판 개념 (상속받았다는 표현 대신)

다중상속 X (단일 상속만을 허용. 부모 하나만 가진다)

코드의 중복 제거 및 재사용

class Person {
String name;
int age;

void walk(){
    System.out.println("걷습니다");

}

class Programmer extends Person { // Person 클래스로부터 상속. extends 키워드 사용
String companyName;

void coding(){
    System.out.println("코딩을 합니다")

public class HelloJava{
public static void main(String[] args){

Person p = new Person();              // Person 객체 생성
p.name = "김코딩";
p.age = 24;
p.walk();
System.out.println(p.name);

Programmer pq = new Programmer();     // Programmer 객체 생성
pg.name = "박해커";
pg.age = 26;
pg.coding();                          // Programmer의 개별기능

[포함 관계]

클래스 재사용. 클래스의 멤버로 다른 클래스 타입의 참조변수 선언하는 것

클래스 간의 관계가 '~은 ~이다 (is ~)' 관계이면 상속.

'~은 ~을 가지고 있다 (has ~)' 관계이면 포함

[메서드 오버라이딩]

상위 클래스에서 상속받은 메서드와 동일한 이름의 메서드를 재정의 하는 것 (덮어쓰기)

조건 3가지 : ① 메서드 선언부(메서드 이름, 매개변수, 반환타입)이 상위 클래스와 완전히 일치 ② 접근 제어자의 범위가 상위 클래스의 메서드보다 같거나 넓어야 ③ 예외는 상위 클래스의 메서드보다 많이 선언할 수 없다

모든 객체를 상위 클래스 타입 하나로 선언하면 배열로 한번에 관리 가능

Vehicle[] vehicles = new Vehicle[] { new Bike(), new Car(), new MotorBike()};
for (Vehicle vehicle : vehicles) {
vehicle.run();
}

[super 키워드와 super()]

super 상위 클래스의 객체 호출

super() 상위 클래스의 생성자 호출

↔︎

this 자신의 객체 호출

this () 자신의 생성자 호출

super와 this 모두 상위 클래스 상속 관계를 전제

[Object 클래스]

상속 계층도에서 최상위에 위치한 상위클래스

아무 상속 받지 않는 클래스에 자동적으로 extend Object 추가.

[캡슐화]

속성과 기능을 하나의 캡슐로 만들어 데이터를 외부로부터 보호하는 것

데이터 보호(외부로부터 클래스에 정의된 속성과 기능 보호). 데이터 은닉(외부에 필요한 부분만 노출)

private, default, protected, public 접근제어자

getter/setter 메서드

피그마 uix 디자인하는 툴

0개의 댓글