- 변수, 메소드, 클래스, 인스턴스로 중복을 제거하고 가독성을 높혀 코드의 유지보수에 획기적인 향상
- 접근 제어자(access modifier)
- public이 붙은 멤버는 외부 클래스에서 사용가능
- private이 붙은 멤버는 외부 클래스에서 사용 불가능, 멤버가 속한 클래스 내부에서는 사용 가능
- default이 붙은 멤버는 해당 멤버를 선언한 클래스가 속한 패키지의 모든 멤버가 접근 가능
- protected:
- 이 멤버를 선언한 클래스의 멤버
- 이 멤버를 선언한 클래스가 속한 패키지의 멤버
- 이 멤버를 선언한 클래그를 상속받은 자식 클래스의 멤버
http://www.tcpschool.com/java/java_modifier_accessModifier
- 기타 제어자
- final: 변수(상수 취급), 메소드(오버라이딩 불가), 클래스(상속 불가)
- abstract: 메소드(오버라이딩 하게 함), 클래스(하나 이상의 추상 메소드 포함)
- 즉 어떤 클래스가 추상 클래스를 상속받고 어떤 추상 메소드를 오버라이딩 하지 않았다면 그 클래스도 추상 클래스가 됨
- static: static 멤버는 클래스 멤버(공유), 일반 멤버는 인스턴스 멤버(독립)
http://www.tcpschool.com/java/java_modifier_ectModifier
- 클래스 상속을 통해 복사 붙혀넣기하지 않고 확장 및 변경하여 유지보수에 도움을 얻음
- overriding: 부모 클래스의 멤버 재정의
- overloading: 같은 이름의 메소드를 형식만 다르게 하여 같은 클래스 내에 정의하는 것
- 본래 상속과는 관련없는 개념
- this: 본인 클래스 참조 변수
- super: 부모 클래스 참조 변수
- 부모 클래스에 생성자가 정의되어있다면 자식 클래스에도 명시적으로 그 생성자를 상속해야함
class Cal{
int v1,v2;
Cal(int v1, int v2){
System.out.println("Cal init!!");
this.v1 = v1; this.v2 = v2;
}
public int sum(){return this.v1+v2;}
}
class Cal3 extends Cal{
Cal3(int v1, int v2) {
super(v1, v2);
System.out.println("Cal3 init!!");
}
public int minus(){return this.v1-v2;}
}
public class InheritanceApp {
public static void main(String[] args) {
Cal c = new Cal(2,1);
Cal3 c3 = new Cal3(2, 1);
System.out.println(c3.sum()); // 3
System.out.println(c3.minus()); // 1
}
}
** this(): 같은 클래스의 다른 생성자 호출, super(): 부모 클래스의 생성자 호출
- 인터페이스를 통해 클래스 형식 규제
- 변수는 초기화하고, 메소드는 선언만
- 상속은 하나의 부모 클래스에게서만 받을 수 있지만, 한 클래스가 여러 인터페이스를 구현할 수 있음
- 인터페이스가 데이터 타입이 될 수 있음
class RealCal implements Calculable, Printable {
...
}
// 다형성
Calculable c = new RealCal();
Printable p = new RealCal();
// 각각의 인터페이스에 해당하는 기능만 사용 가능
https://www.youtube.com/watch?v=hvTuZshZvIo&list=PLuHgQVnccGMAb-e41kXPSIpmoz1RvHyN4&index=8
https://www.youtube.com/playlist?list=PLuHgQVnccGMA1bRSk_SZrXMngx5iq03cc
https://www.youtube.com/playlist?list=PLuHgQVnccGMDiv-rCwlN-YjLKWR6-SBbM
'course > 생활코딩' 카테고리의 다른 글
[JAVA 예외] (0) | 2022.07.23 |
---|---|
[JAVA1] 자바 문서 보기 - 클래스, 인스턴스, 상속 (0) | 2022.07.20 |
[JAVA1] 프로그래밍, 디버깅, 컴파일 (0) | 2022.07.19 |
[JAVA1] 자료형, 변수 (0) | 2022.07.19 |
[JAVA1] 자바의 활용 (0) | 2022.07.19 |