Java/Basic

[Java_Basic]클래스의 상속3 : 상속의 목적(윤성우의 열혈 Java 프로그래밍)

bangle0621 2021. 1. 2. 16:29

상속의 활용

class Friend{
	protected String name;
	protected String phone;

	public Friend(String na, String ph){
		name = na;
		phone = ph;
	}
	public void showInfo(){
		System.out.println("이름 : " + name);
		System.out.println("전화 : " + phone);
	}
}

class UnivFriend extends Friend{
	private String major;

	public UnivFriend(String na, String ph, String ma){
		super(na, ph);
		major = ma;
	}
	public void showInfo(){
		super.showInfo();
		System.out.println("전공 : " + major);
	}
}

class CompFriend extends Friend{
	private String department;

	public CompFriend(String na, String ph, String de){
		super(na, ph);
		department = de;
	}
	public void showInfo(){
		super.showInfo();
		System.out.println("부서 : " + department);	
	}
}

class MyFriends2{
	public static void main(String[] args){
		Friend[] frns = new Friend[10];
		int cnt = 0;

		frns[cnt++] = new UnivFriend("LEE","Computer","010-444-333");
		frns[cnt++] = new UnivFriend("SEO","Electronics","010-333-222");
		frns[cnt++] = new CompFriend("WON","R&D1","010-213-2323");
		frns[cnt++] = new CompFriend("HAN","R&D2","010-2323-2313");

		for(int i = 0;i<cnt;i++){
			frns[i].showInfo();
			System.out.println();
		}
	}
}

 

모든 클래스는 Object 클래스를 상속한다.

toString 메소드를 정의했을때 Object 클래스에 있는 메소드를 오버라이딩한것

 

final 선언

public final class MyLastCLS{...}

->다른 클래스를 상속 할 수 없음

 

class Simple{

    public final void func(int n){...}   -> 다은 클래스에서 오버라이딩 할 수 없음

}

 

@Override

어노테이션 / 오버라이딩 했다는 것을 표시, 기능을 더해주진 않지만 오버로딩을 방지

상위 클래스의 메소드를 오버라이딩 하는 것이 목적이라는 선언!

오버라이딩을 하는 형태가 아니면 컴파일러가 오류 메시지 전달