-
[Java] 상속(Inheritance), 인터페이스(Interface)Java/용어 2019. 4. 30. 09:38반응형
상속 : 재사용 + 확장
- 객제 지향에서의 상속은 상위 클래스의 특성을 하위 클래스에서 상속(특성 상속)하고 거기에 더해 필요한 특성을 추가, 즉 확장해서 사용할 수 있다는 의미입니다.
상속의 특징
- 객제 지향의 상속은 상위 클래스의 특성을 재사용하는 것입니다. (상위 클래스에서만 getClassName() 메서드를 구현했지만 모든 하위 클래스의 객체에서 getClassName() 메서드를 사용할 수 있습니다.)
- 객제 지향의 상속은 상위 클래스의 특성을 확장하는 것입니다.
- 객제 지향의 상속은 is a kind of 관계를 만족해야 합니다. (하위 클래스 is a kind of 상위 클래스)
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576public class Animal {public String name;Animal() {name = "동물";};public void getClassName() {System.out.println(name + " 클래스입니다.");}}public class Mammals extends Animal {Mammals() {name = "포유류";}}public class Birds extends Animal {Birds() {name = "조류";}}public class Whale extends Mammals {Whale() {name = "고래";}}public class Bat extends Mammals {Bat() {name = "박쥐";}}public class Sparrow extends Birds {Sparrow() {name = "참새";}}public class Penguin extends Birds {Penguin() {name = "펭귄";}}public class Main {public static void main(String[] args) {Animal animal = new Animal();Mammals mammals = new Mammals();Birds birds = new Birds();Whale whale = new Whale();Bat bat = new Bat();Sparrow sparrow = new Sparrow();Penguin penguin = new Penguin();animal.getClassName();mammals.getClassName();birds.getClassName();whale.getClassName();bat.getClassName();sparrow.getClassName();penguin.getClassName();}}cs 상속과 인터페이스
- 인터페이스는 be able to, 즉 "무엇을 할 수 있는"이라는 표현 형태로 구현하는 것이 좋습니다.
- 인터페이스는 클래스가 "무엇을 할 수 있다"라고 하는 기능을 구현하도록 강제합니다.
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273public interface Swimable {void swim();}public interface Flyable {void fly();}public class Whale extends Mammals implements Swimable {Whale() {name = "고래";}@Overridepublic void swim() {System.out.println(name + " 클래스는 Swimable 인터페이스를 상속 받아 swim 메서드를 구현하였습니다.");}}public class Bat extends Mammals implements Flyable {Bat() {name = "박쥐";}@Overridepublic void fly() {System.out.println(name + " 클래스는 Flyable 인터페이스를 상속 받아 fly 메서드를 구현하였습니다.");}}public class Sparrow extends Birds implements Flyable {Sparrow() {name = "참새";}@Overridepublic void fly() {System.out.println(name + " 클래스는 Flyable 인터페이스를 상속 받아 fly 메서드를 구현하였습니다.");}}public class Penguin extends Birds implements Swimable {Penguin() {name = "펭귄";}@Overridepublic void swim() {System.out.println(name + " 클래스는 Swimable 인터페이스를 상속 받아 swim 메서드를 구현하였습니다.");}}public class Main {public static void main(String[] args) {Whale whale = new Whale();Bat bat = new Bat();Sparrow sparrow = new Sparrow();Penguin penguin = new Penguin();whale.swim();bat.fly();sparrow.fly();penguin.swim();}}cs 출처 - 스프링 입문을 위한 자바 객체 지향의 원리와 이해
반응형'Java > 용어' 카테고리의 다른 글
[Java] 스택(Stack)과 큐(Queue) (1) 2020.03.07 [Java] 오버라이딩(Overriding) (0) 2019.04.30 [Java] 오버로딩(Overloading) (0) 2019.04.30 [Java] 객체 지향의 4대 특성 (0) 2019.04.30 [Java] 웹 개발자(Java, Spring) 기술 면접 예상 질문 (0) 2018.12.28