* 오버라이딩
: 조상 클래스로부터 상속받은 메서드의 내용을 변경하는 것을 오버라이딩이라고 한다. 상속 받은 메서드를 그대로 사용하기도 하지만, 자손 클래스 자신에 맞게 변경해야 하는 경우가 많다. 이럴 때 조상의 메서드를 오버라이딩한다.
<예문>
package Exercise; public class OverridingTest { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub Point3D p3 = new Point3D(); p3.x = 10; p3.y = 20; p3.z = 30; System.out.println("result: ["+p3.getLocation()+"]"); } } class Point{ int x; int y; String getLocation(){ return "x :" + x + ", y :" + y; } } class Point3D extends Point{ int z; String getLocation(){ return "x :" + x + ", y :" + y + ", z" + z; } }
* 오버라이딩의 조건
자손 클래스에서 오버라이딩하는 메서드는 조상 클래스의 메서드와
1. 이름이 같아야 한다.
2. 매개변수가 같아야 한다.
3. 리턴타입이 같아야 한다.
* 오버로딩 - 오러라이딩
- 오버로딩(overloading) : 기존에 없는 새로운 메서드를 정의하는 것(new)
- 오버라이딩(overriding) : 상속 받은 메서드의 내용을 변경하는 것(change, modify)
* super
: 자손 클래스에서 조상 클래스로부터 상속받은 멤버를 참조하는데 사용되는 참조 변수이다. 멤버변수와 지역변수의 이름이 같을 때 this를 사용해서 구별했듯이 상속받은 멤버와 자신의 클래스에 정의된 멤버의 이름이 같을 때는 super를 사용해서 구별할 수 있다.
<예문>
package Exercise; public class SuperTest { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub Child c = new Child(); c.method(); } } class Parent{ int x = 10; } class Child extends Parent{ void method(){ System.out.println("x="+x); System.out.println("this.x="+this.x); System.out.println("super.x="+super.x); } }
* super() - 조상 클래스의 생성자
: this()와 마찬가지로 super() 역시 생성자이다. this()는 같은 클래스의 다른 생성자를 호출하는 데 사용되지만, super()는 조상 클래스의 생성자를 호출하는데 사용된다.
cf) Object 클래스를 제외한 모든 클래스의 생성자 첫 줄에는 생성자(같은 클래스의 다른 생성자 또는 조상의 생성자)를 호출해야 한다. 그렇지 않으면 컴파일러가 자동적으로 'super();'를 생성자의 첫 줄에 삽입한다.
'개발 관련 지식 > 자바(Java)' 카테고리의 다른 글
[자바] 제어자(modifier) (0) | 2014.07.02 |
---|---|
[자바] 패키지(Package) 와 임폴트(Import) (0) | 2014.07.02 |
[자바] 변수의 초기화 (0) | 2014.07.02 |
[자바] 생성자(Constructor) (0) | 2014.06.30 |
[자바] 메서드 오버로딩(method overloading) (0) | 2014.06.24 |