이미 잘 개발된 클래스를 재사용
→중복되는 코드를 줄여 개발시간을 단축시킴
클래스 상속(자식이 부모를 선택한다)
public class 자식클래스 extands 부모클래스 {
}
<aside> 💡 자바는 다중 상속을 허용하지 않음 / 단 하나의 부모 클래스만이 허용된다
</aside>
예시)
class XY{ ////부모 class
int a,b;
void set(int a, int b) {
this.a=a; this.b=b;
}
void show() {
System.out.println(a+" "+b);
}
}
class XYZ extends XY{ // 자식 = XYZ , 부모 = XY
// int a,b; 등(을)를 따로 적지 않아도 된다. 상속 받았기 때문에
// 즉, 부모에겐 있지만 자식에게 없는걸 작성하면 된다.
private String name;
void setName(String a) {
name=a;
}
void pr() {
show();
System.out.println(name);
}
}
public class Class {
public static void main(String[] args) {
XY x=new XY();
x.set(4,8);
x.show(); // 4,8출력
XYZ y=new XYZ();
y.set(5,8);
y.setName("xyz");
y.pr();
}
}
부모 생성자 호출
예시)
import java.util.Scanner;
//부모 class = Super class = Upper class
class Person{
private String name;
Person(String name){
this.name=name;
}
void name() {
System.out.println(name);
}
}
class Student extends Person{ // Student = 자식 , Person = 부모
//자식 class 필드
private String major;
private String school;
//자식 class의 생성자 = Sub class = low 클래스
Student(String name, String major, String school){
super(name);//부모생성자 호출
// =this.name=name;
this.major=major;
this.school=school;
}
void show() {
name(); //부모 class 의 name 함수 호출 = System.out.println(name);
System.out.println(major);
System.out.println(school);
}
}
public class parents {
public static void main(String[] args) {
Person p=new Person("길동");
p.name(); // 길동이 출력됨
p.show(); // 부모클래스로부터 자식클래스로의 접근불가
Student s=new Student("길동","컴퓨터","컴공");
s.show();
s.name="alal"; // 출력이 안됨/ 부모클래스
}
}
예시2)
class Friend{
private String name;
private String phone;
Friend(String name, String phone){
this.name=name; this.phone=phone; }
String get(){
return name +" "+phone;
}
}
class ITFriend extends Friend{
String major;
ITFriend(String a, String b, String major){
super(a, b); // super는 맨 처음 나와야된다! super는 1개만 사용가능
this.major=major;
}
void show() {
System.out.println(get()+" "+major); //부모 클래스에서 private으로 접근을 제한해서 get 메소드로 호출 사용
}
}
public class mmdd0229_2 {
public static void main(String[] args) {
ITFriend it=new ITFriend("홍길동", "010-111-1111", "컴퓨터");
it.show();
}
}
메소드 오버라이딩
<aside> 💡 메소드가 오버라이딩 되면 부모 메소드는 숨겨지고 자식 메소드가 우선적으로 사용됨
</aside>