course/생활코딩

[JAVA OOP]

hjkim0502 2022. 7. 23. 19:45
  • 변수, 메소드, 클래스, 인스턴스로 중복을 제거하고 가독성을 높혀 코드의 유지보수에 획기적인 향상
  • 접근 제어자(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