everyday com-eat
작성일
2022. 1. 19. 09:21
작성자
갱수터
728x90

생성자 (메서드) 오버로딩 

- 메서드 오버로딩 : 한 클래스내에서 기능이 비슷한 메서드는 매개변수의 개수와 타입이 다르다면 같은 이름으로 선언할 수 있다.

- 생성자 오버로딩 시 default 생성자도 선언해야 한다

- 다양한 인수를 전달하여 객체생성에 유연하게 활용할 수 있고, 다양한 초기 설정 처리가 가능하다.

- this( ) : 특정 생성자 안에서 다른 생성자 호출, 생성자 블럭 제일 위쪽에 위치해야함

- 접근지정자 붙일 수 있음

class Car {
	public int num;
    public double gas;
    
	public Car( ){//Default 생성자
        num = 0;	gas = 0.0;
        System.out.println("변수 초기화");
    }
    
    public Car(int n, double g){ //매개변수 있는 생성자 오버로딩
        this( );
        num = n;	gas = g;
        System.out.println("입력받은 매개변수 값 대입");
    }
    
}

 

상속 - extends

- 상속 하는 클래스 : 슈퍼 클래스, 부모 클래스

- 상속 받는 클래스 : 서브 클래스, 자식 클래스

- class 서브 클래스 extends 슈퍼클래스{ }

- 서브 클래스는 슈퍼 클래스의 멤버를 상속받는다(따로 작성할 필요x)

- 슈퍼 클래스의 생성자는 서브 클래스에게 상속되지 않는다

- 슈퍼 클래스의 인수 없는 생성자(default 생성자)는 자동 호출 됨

- 슈퍼 클래스 생성자 지정 : super( )

- 슈퍼 클래스에서 private로 지정하면 서브 클래스도 접근 불가(protected 이용)

 

 

오버라이딩 - @Override

- 상속받은 서브클래스에서 메서드 이름, 매개변수 갯수, 매개변수 타입 모두 같게 메서드를 정의 할 수 있음

- 오버라이딩 못하게 할려면 슈퍼클래스에서 final로 지정하면 됨

 

 

추상 클래스, 메서드 - abstract

- 추상 클래스 : abstract class 클래스명{ }

- 추상 메서드 : abstract void 메서드명( );

- 추상 클래스는 객체를 생성할 수 없다

- 추상 메서드를 포함해야 한다

- 추상클래스를  상속받은 서브클래스는 상속받은 추상 메서드를 오버라이딩해서 구현해야한다

- instanceof 연산자 : 좌변의 변수가 가리키는 객체의 클래스가 오른쪽과 같은 클래스인지 여부 확인

 

 

인터페이스 - interface

- 생성자를 갖지 못함
- 객체 생성 못함
- 내가 쓰지 않아도 필드에는 public static final , 메서드에는 abstract가 붙는다고 생각 (즉, 상수와 추상메서드)
- 인터페이스 타입 변수 선언은 가능
- 인터페이스를 구현하는 클래스에는 implements 키워드를 붙이고, 인터페이스의 메서드는 추상메서드와 같기 때문에 모두 구현해야 함
- implements 뒤 인터페이스 2개 이상 구현 가능
- 인터페이스 다중 상속(extends) 가능

728x90