클래스 내에서 static 키워드가 없는 메소드
개인과 관련된 작업과 집합과 관련된 작업이 가능하다.
인스턴스를 생성하여 사용해야한다.
객체 내부에서는
this.메소드명();
인스턴스 생성 후에는
인스턴스명.메소드명();
으로 사용한다.
클래스 내에서 static 키워드가 붙은 메소드
개인과 관련된 작업은 불가능하며 오로지 집합(클래스 내에서 공통으로 가져야 할 값)에 관련된 작업만 가능하다.
인스턴스 생성 없이 바로, 클래스 내외에서 공통적으로
클래스명.메소드명();
으로 사용할 수 있다.
부모가 가지는 재산을 자식에게 물려주는 행동
부모 클래스가 가지는 재산(변수, 메소드)을 자식 클래스에게 물려주는 행동
자식 클래스가 코드를 구현하지 않아도, 부모 클래스로부터 구현된 코드를 물려받는 행동
비용 절감과 코드 재사용
//부모 클래스
class Member {
public String name;
public String id;
public String pw;
}
//일반 회원
class User extends Member {
public String email;
}
부모 클래스가 먼저 생성된 뒤 자식 클래스가 생성된다.
그 다음 관계를 연결시켜준다.
class 클래스명 extends 부모클래스명{}
으로 사용한다.
Object 클래스
개발자가 만드는 모든 클래스는 명시적으로 상속을 구현하지 않으면 자동으로 Object 클래스의 자식 클래스가 된다.
toString()
객체 내부 값을 문자로 출력하고 싶을 때 사용한다.
Object 클래스에 명시되어 있으며, 해당 클래스에 맞게 오버라이드하여 수정해 사용한다.
현재 생성한 클래스가 추후 상속이 될지 안될지 모르겠다면 final로 막아놔도 좋다.
인터페이스는 상속받는 여러 클래스들의 행동(사용법, 메소드)들을 통일시키는 역할을 하며, 행동 규약 정의한다.
-> 클래스의 부모이자 상속받는 자식에게 강제로 전부 구현하게 시킨다
인터페이스 멤버
중요! 인터페이스는 구현된 멤버를 가질 수 없다.
중요! 인터페이스는 구현부를 가진 메소드를 소유할 수 없다.
중요! 인터페이스를 상속받는 클래스는 반드시 인터페이스의 추상 메소드를 구현해야 한다
구현부가 없이 선언부만 존재하는 메소드를 추상 메소드라고 한다.
class 클래스명 implements 인터페이스명 {}