[Java] Override(재정의) & Overload & Access Modifier(접근권한자)

Junseo Kim·2019년 12월 23일
0

[Java]자바 기초

목록 보기
14/35

Override

자식이 부모클래스를 extends 하고 있을 때, 자식 클래스에서 부모클래스가 가지고 있는 메소드를 같은 타입과 같은 이름으로 사용할 경우, 재정의(override) 한다고 말한다.

ex.

// 부모 클래스

public class parent {
	
	private void ac1() { // 프라이빗
		System.out.println("private!");
	}
	protected void ac2() { // 프로텍티드 
		System.out.println("protected!");
	}
	void ac3() { // 디폴트 
		System.out.println("default!");
	}
	public void ac4() { // 퍼블릭
		System.out.println("public");
	}

}
// 자식 클래스

public class child extends parent {

	public void ac4() { // 부모 클래스의 ac4메소드를 자식 클래스에서 override 
		System.out.println("public! in child class");
	}
}
// 메인 클래스

public class main {

	public static void main(String[] args) {
		
		parent a = new parent(); // 부모 클래스 선언
		child b = new child(); // 자식 클래스 선언 
		
		a.ac4(); 
		b.ac4();

	}

}

Overload

Overload는 메소드의 이름은 같지만, 인자의 수나, 자료형이 다른 메소드를 중복으로 선언하는 것이다. 즉 같은 메소드라 해도, 매개변수만 다르면 정의하여 사용가능하다. 메소드의 이름이 같아야하며, 리턴 형은 달라도 상관 없다. 파라미터의 개수가 달라야하며, 파라미터의 개수가 같을 경우는 데이터 타입이 달라야한다.

ex.

	public void ac4() { 
		...
	}
    public void ac4(String test) { 
		...
	}
    public void ac4(String test, int testNum) { 
		...
	}

접근권한자

  1. privated
    같은 클래스 내에서만 호출 가능. 외부에서 참조하지 못하게 할 때 사용.

ex.

	private void ac1() { // 프라이빗
		System.out.println("private!");
	}
  1. default
    다른 패키지에서 참조 불가.

ex.

	void ac3() { // 디폴트 
		System.out.println("default!");
	}
  1. protected
    다른 패키지에서 참조 불가. but, 다른 패키지에 있더라도 상속 시 사용할 수 있게 해줌.

ex.

	protected void ac2() { // 프로텍티드 
		System.out.println("protected!");
	}
  1. public
    자유롭게 사용가능

ex.

	public void ac4() { // 퍼블릭
		System.out.println("public");
	}

0개의 댓글