728x90
상속이란 무엇인가?
자바에는 상속이란 기능이 있는데 상속의 사전적인 뜻처럼 부모로부터 물려받는 기능을 의미합니다. 부모 클래스는 일반적인 객체들을 가지게 됩니다. 아래의 예시처럼 캐릭터를 만들 때 이름과 레벨은 꼭 포함되지만 직업마다 특징은 다릅니다. 이럴 때 이름과 레벨을 부모 클래스에 두고 상속을 해주는 방식으로 코드를 이용합니다.
public class Character{ //부모클래스
public String name;
public int level;
}
public class Warrior extends Character{ //자식클래스
//String name;
//int level;
//상속을 받았기에 name과 level 객체변수를 따로 선언 안해도 됩니다.
public int strPower;
public void info(){
System.out.println("이름:"+this.name);
System.out.println("레벨:"+this.level);
System.out.println("strPower:"+strPower);
}
}
public class Wizard extends Character{ //자식클래스
public int magicPower;
public void info(){
System.out.println("이름:"+this.name);
System.out.println("레벨:"+this.level);
System.out.println("magicPower:"+magicPower);
}
}
클래스를 상속하기 위해서는 extends라는 키워드를 사용해야 합니다. 위의 예시에서는 Character클래스가 부모 클래스가 되고 Warrior와 Wizard클래스는 자식 부모로서 Character클래스의 객체 변수를 상속받습니다. 상속을 받은 객체 변수는 자식 클래스에서 사용할 수 있습니다.
public class Game{
public static void main(String[] args){
Warrior warrior = new Warrior();
warrior.name = "홍길동";
warrior.level = 20;
warrior.strPower=100;
warrior.info;
/*출력
이름:홍길동
레벨:20
strPower:100
*/
}
}
위와 같이 warrior를 생성하고 name과 level를 warrior.name과 warrior.level처럼 warrior의 객체 변수로 사용할 수 있습니다. 반대로 자식 클래스에 있는 메서드 혹은 객체 변수는 부모 클래스에서 사용할 수 없습니다.
728x90