상속(Ingeritance)
Animal.java
public class Animal {
String name;
public void setName(String name) {
this.name = name;
}
}
Dog.java
public class Dog extends Animal {
public static void main(String[] args) {
Dog dog = new Dog();
dog.setName("poppy");
System.out.println(dog.name);
}
}
Dog 클래스에sleep이라는 메소드를 추가 해보면,
public class Dog extends Animal {
public void sleep() {
System.out.println(this.name+" zzz");
}
public static void main(String[] args) {
Dog dog = new Dog();
dog.setName("poppy");
System.out.println(dog.name);
dog.sleep();
}
}
이렇듯 보통 부모 클래스를 상속받은 자식 클래스는 부모 클래스의 기능에 더하여 좀 더 많은 기능을 갖도록 설계한다.
메소드 오버라이딩 (Method overriding)
이번에는 Dog 클래스를 좀 더 구체화 시키는 HouseDog 클래스를 만들어 보자
HouseDog.java
public class HouseDog extends Dog {
public static void main(String[] args) {
HouseDog houseDog = new HouseDog();
houseDog.setName("happy");
houseDog.sleep();
}
}
happy zzz
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();
}
}
happy zzz in house
이렇게 부모클래스의 메소드를 자식클래스가 동일한 형태로 또다시 구현하는 것을 Method Overriding 이라고 한다.
메소드 오버로딩(Method overloading)
HouseDog.java
public class HouseDog extends Dog {
public void sleep(){
System.out.println(this.name + " zzz in house")
}
public void sleep(int hour) {
System.out.println(this.name+" zzz in house for " + hour + " hours");
}
public static void main(String[] args) {
HouseDog houseDog = new HouseDog();
houseDog.setName("happy");
houseDog.sleep();
}
}
happy zzz in house
이미 sleep이라는 메소드가 있지만 동일한 이름의 sleep메소드를 또 생성할 수 있다. 단, 메소드의 입력항목이 다를 경우만 가능하다. 새로 만든 sleep메소드는 입력항목으로 hour라는 int 자료형이 추가되었다.
이렇듯 입력항목이 다른 경우 동일한 이름의 메소드를 만들 수 있는데 이를 메소드 오버로딩(method overloading)이라고 부른다.
public class HouseDog extends Dog {
public void sleep() {
System.out.println(this.name+" zzz in house");
}
public void sleep(int hour) {
System.out.println(this.name+" zzz in house for " + hour + " hours");
}
public static void main(String[] args) {
HouseDog houseDog = new HouseDog();
houseDog.setName("happy");
houseDog.sleep(); // sleep() 메소드 호출
houseDog.sleep(3); // sleep(int hour) 메소드 호출
}
}
happy zzz in house
happy zzz in house for 3 hours
'개발 > JAVA' 카테고리의 다른 글
[JAVA] 인터페이스 (0) | 2020.06.17 |
---|---|
[JAVA] 생성자 (0) | 2020.06.15 |
[JAVA] Call by Value (0) | 2020.06.11 |
[JAVA] 메소드 (0) | 2020.06.10 |
[JAVA] 클래스 (0) | 2020.06.08 |