이미 잘 개발된 클래스를 재사용

→중복되는 코드를 줄여 개발시간을 단축시킴

클래스 상속(자식이 부모를 선택한다)

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>