본문 바로가기
풀스택/Java다시 복습 처음부터

java 복습 3-3(객체지향 프로그래밍) - 상속, 오버라이딩

by woohyun22 2019. 6. 6.
1
2
3
4
5
6
7
public class Animal {
    String name;
 
    public void setName(String name) {
        this.name = name;
    }
}
cs


1
2
3
public class Dog extends Animal {
 
}
cs


상속할때는 ex) 자식 extends 부모 

형식으로 쓴다.


1
2
3
4
5
6
7
public class Dog extends Animal {
    public static void main(String[] args) {
        Dog dog = new Dog();
        dog.setName("poppy");
        System.out.println(dog.name);
    }
}
cs


부모에게 상속을 받았기 때문에 자식 클래스에서 메소드를 그대로 사용할 수 있다.


1
Animal dog = new Dog();
cs

상속관계일때 자식 객체는 부모 클래스의 자료형인 것 처럼 사용할 수 있다.
반대로는 사용할 수 없다. ex) 부모 a = new 자식(), 새 자식을 만들 수 있다. 


오버라이딩

현재 상태 - 부모>Animal>Dog>HouseDog>자식 순


1
2
3
4
5
6
7
public class HouseDog extends Dog {
    public static void main(String[] args) {
        HouseDog houseDog = new HouseDog();
        houseDog.setName("happy");
        houseDog.sleep();
    }
}
cs


1
2
3
4
5
6
7
8
9
10
11
public class HouseDog extends Dog {
    public void sleep() {
        System.out.println(this.name+" zzz in house");
    } 
 
    public static void main(String[] args) {
        HouseDog houseDog = new HouseDog();
        houseDog.setName("happy");
        houseDog.sleep();
    }
}
cs


오버라이딩은 부모의 메소드와 같은 명의 메소드를 자식 클래스에 만드는데, 

이 경우에는 자식의 클래스에 선언된 메소드가 먼저 돌기 때문에 자식 메소드가 실행된다.


메소드 오버로딩(메소드 덮어쓰기) - 부모클래스의 메소드를 자식 클래스가 동일한 형태로 또다시 구현하는 행위


자바는 다중 상속을 지원하지 않는다.




728x90

댓글