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
'풀스택 > Java다시 복습 처음부터' 카테고리의 다른 글
java 복습 3-5(객체지향 프로그래밍) - 인터페이스 (0) | 2019.06.06 |
---|---|
java 복습 3-4(객체지향 프로그래밍) - 생성자, 오버로딩 (0) | 2019.06.06 |
java 복습 3-3(객체지향 프로그래밍) - Call by value (0) | 2019.06.06 |
java 복습 3-2(객체지향 프로그래밍) - 메소드 (0) | 2019.06.04 |
java 복습 3-1(객체지향 프로그래밍) - class (0) | 2019.06.04 |
댓글