TIL 23.08.02

황은하·2023년 8월 2일
0

TIL

목록 보기
53/146

📌Today I Learned

Java 수업 (Ex44-53)

static

객체 메소드

클래스 내에서 static 키워드가 없는 메소드
개인과 관련된 작업과 집합과 관련된 작업이 가능하다.
인스턴스를 생성하여 사용해야한다.
객체 내부에서는

this.메소드명();

인스턴스 생성 후에는
인스턴스명.메소드명();
으로 사용한다.

정적 메소드

클래스 내에서 static 키워드가 붙은 메소드
개인과 관련된 작업은 불가능하며 오로지 집합(클래스 내에서 공통으로 가져야 할 값)에 관련된 작업만 가능하다.
인스턴스 생성 없이 바로, 클래스 내외에서 공통적으로

클래스명.메소드명();

으로 사용할 수 있다.


Inheritance

상속, Inheritance

부모가 가지는 재산을 자식에게 물려주는 행동
부모 클래스가 가지는 재산(변수, 메소드)을 자식 클래스에게 물려주는 행동
자식 클래스가 코드를 구현하지 않아도, 부모 클래스로부터 구현된 코드를 물려받는 행동

상속을 하는 이유

비용 절감과 코드 재사용

상속 관계에 있는 클래스 호칭

  • 부모 클래스 <- 자식 클래스
  • 슈퍼 클래스 <- 서브 클래스
  • 기본 클래스 <- 확장 클래스
  • 기본 클래스 <- 파생 클래스
//부모 클래스
class Member {
	public String name;
	public String id;
	public String pw;
}

//일반 회원
class User extends Member {
	public String email;
}

부모 클래스가 먼저 생성된 뒤 자식 클래스가 생성된다.
그 다음 관계를 연결시켜준다.

class 클래스명 extends 부모클래스명{}

으로 사용한다.


Object

Object 클래스

  • JDK에서 제공되는 클래스
  • 모든 클래스의 근원 클래스 > Root Class, 루트 클래스
  • 9개 메소드 > 모든 클래스들에게 공통으로 필요하다고 생각하는 기능을 구현

개발자가 만드는 모든 클래스는 명시적으로 상속을 구현하지 않으면 자동으로 Object 클래스의 자식 클래스가 된다.


Overriding

메소드 오버로딩, Method Overloading

  • 메소드 이름 동일 x N개 생성 > 인자 리스트가 변화한다.

메소드 오버라이딩, Method Overriding

  • 클래스 상속 시 발생
  • 메소드 재정의 > 상속받은 메소드를 수정하는(덮어쓰는) 기술
  • @Override 어노테이션으로 오버라이드 되고있음을 명시적으로 알려준다.
  • 오버라이딩 하게 되면 부모 클래스의 해당 메소드가 아니라 오버라이딩된 자식 클래스의 메소드만 사용하게 된다.

대중적인 오버라이딩 사례

toString()
객체 내부 값을 문자로 출력하고 싶을 때 사용한다.
Object 클래스에 명시되어 있으며, 해당 클래스에 맞게 오버라이드하여 수정해 사용한다.


final

final 키워드

  • 한 번 결정하면 바꿀 수 없다.
  • 안정성 높다.

적용이 가능한 곳

  1. 변수 적용(지역 변수, 멤버 변수)
  • 초기화 이후 값을 변경할 수 없다.
  • 상수라고 한다.
  1. 메소드 적용
  • 상속에서만 발생한다.
  • 오버라이드를 금지시킨다.
  • 부모 메소드가 자식 클래스에서 수정하지 못하게 한다.
  1. 클래스 적용
  • 상속에서만 발생한다.
  • 부모 클래스가 수정하지 못하게 한다. 즉, 상속으로 인하여 자식 클래스가 생성되지 못하게 막는다. (=> 확장 불가 => 자식 생성 불가)

현재 생성한 클래스가 추후 상속이 될지 안될지 모르겠다면 final로 막아놔도 좋다.


interface

인터페이스, interface

  • 클래스의 일종
  • 자료형
  • 객체를 생성할 수 없다.
  • 참조 변수는 생성할 수 있다.
  • 클래스의 부모 역할 > 상속 관계

인터페이스는 상속받는 여러 클래스들의 행동(사용법, 메소드)들을 통일시키는 역할을 하며, 행동 규약 정의한다.
-> 클래스의 부모이자 상속받는 자식에게 강제로 전부 구현하게 시킨다

인터페이스 멤버

  • 멤버 변수
  • 멤버 메소드
  • 인터페이스는 추상 멤버만을 가질 수 있다. (추상 메소드)
    (=> 자바의 인터페이스는 추상 멤버가 아닌 구현 멤버의 일부를 가질 수 있다. 그런데 보편적인 oop에서는 그러면 안된다.)

중요! 인터페이스는 구현된 멤버를 가질 수 없다.
중요! 인터페이스는 구현부를 가진 메소드를 소유할 수 없다.
중요! 인터페이스를 상속받는 클래스는 반드시 인터페이스의 추상 메소드를 구현해야 한다

구현부가 없이 선언부만 존재하는 메소드를 추상 메소드라고 한다.

class 클래스명 implements 인터페이스명 {}


문제풀이

코드리뷰

profile
차근차근 하나씩

0개의 댓글