티스토리 뷰

오버로딩(Overloading) 오버라이딩(Overriding)

이름이 비슷해 사람들이 많이 헷갈려한다. 정확하게 말해 오버로딩과 오버라이은 다른 개념이다.

1. 오버로딩(Overloading)

오버로딩은 한 클래스 내에서 이름이 같은 메서드를 선언할 수 있다. 하지만 아래와 같은 조건이 성립해야 한다.

  • 매개변수의 타입과 개수는 달라야 한다.(반환형은 무조건 같아야 한다.)
  • 매개변수는 같으나, 반환형이 다를 경우 오버로딩이 되지 않는다.
  •  public class Test{
        public static void main(String[] args) {
           Hello h = new Hello();
           System.out.println(h.method());
           System.out.println(h.method("bbigbros"));
           System.out.println(h.method("java", 100));
        }    
     }
    
     class Hello {
        public String method() {
           return "hello world";
        }
        public String method(String name) {
           return name + " hello world!";
        }
        public String method(String name, int age) {
           return name + ", " + age + "Age..";
        }
     }
    

2. 오버라이딩(Overrding)

오버로딩(Overloading)과 달리 상속과 관련이 있다. 부모 클래스로부터 물려 받으며 자신에 맞게 수정한다.

  • 메서드의 이름이 같아야 한다.
  • 매개변수가 같아야 한다.
  • 리턴 타입이 같아야 한다.
  • 이런 것을 다형성이라고 부른다.
  •  public class Test{
        public static void main(String[] args) {
           Dog d = new Dog();
           Cat c = new Cat();
           System.out.println(d.Info());
           System.out.println(c.Info());
        }    
     }
     class Animal {
        public String Info() {
           return "나는 동물이야";
        }
     }
     class Dog extends Animal {
        // 강아지 클래스 오버라이딩 적용
        public String Info() {
           return "나는 강아지야";
        }
     }
     class Cat extends Animal {
        // 고양이 클래스 오버라이딩 적용
        public String Info() {
           return "나는 고양이야";
        }
     }
    

'JAVA' 카테고리의 다른 글

[자바(JAVA)] 인터페이스(Interface)  (0) 2017.07.20
[자바(JAVA)] 상속(Inheritance)의 개념  (0) 2017.07.09
[자바(JAVA)] Properties 클래스  (0) 2017.06.28
[자바(JAVA)] 생성자란 무엇인가?  (0) 2017.06.27
변수(Variable)  (0) 2014.11.19
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
글 보관함