0907

호두·2022년 9월 7일
0

공부

목록 보기
18/25

6.상속

  • extends
  • Object: 모든 클래스는 Object클래스를 부모클래스로 가진다(클래스 객체.getClass())
  • 포함관계, 상속관계
  • ☆protected: 상속을 받은 곳에서는 public처럼 사용, 상속을 받지 못한 곳에서는 default처럼 사용
  • ☆super, super() (day09 Exam03.java)
    super 메소드: 상속관계에서 부모클래스의 멤버필드를 받아오고, 그 멤버필드에 초기값을 부여할 때 부모클래스의 생성자를 호출하여 초기값을 준다. / 구현하지 않으면 부모클래스의 default 생성자를 호출한다.
  • ☆오버라이드: 부모클래스의 메소드를 자식이 이름은 그대로 사용하고 내용을 바꾸어 쓰겠다.
  1. 접근제한자 법칙: private < default < protected > public 이런 공식일 때, 자식의 접근제한자는 부모보다 크거나 같아야한다..
  2. 예외전가 법칙: 부모에 없는 예외전가는 자식이 만들 수 없다.
    \꼭 해야하는 건 아니지만, 부모에 예외전가가 있으면 그 예외전가를 따라 적어준다.

자바코딩시 생략가능한 것

  • import java.lang.*
  • default 생성자
  • this 예약어
  • 0번째 매개변수
  • extends Object
  • super()

객체명을 출력시키면 .toString () 메소드를 실행한다.


/*
 * 인원수를 입력받고 이름, 전화번호, 주소를 입력받아 출력시켜주는 프로그램 / Member04 클래스를 상속받아
 */
import java.util.*;
class Member04{
	private String name;
	private String tel;
	public Member04(String name, String tel) {
		this.name = name;
		this.tel = tel;
	}
	public String getName() {
		return name;
	}
	public void setTel(String tel) {//setter 메소드 / 외부에서 class의 값을 바꿀때
		this.tel = tel;
	}
	public String getTel() {		//getter 메소드 / 외부에서 class의 값을 출력할때
		return tel;
	}
	public void disp() {
		System.out.println(name+"님의 전화번호는 " + tel +"번 입니다.");
	}
}

class Member004 extends Member04{
	private String addr;
	public Member004(String name, String tel, String addr) {
		super(name, tel);
		this.addr = addr;
	}
	public void setAddr(String addr) {
		this.addr = addr;
	}
	public String getAddr() {
		return addr;
	}
	public void disp() {
		System.out.println(getName() + "님의 전화번호는 " + getTel() 
									+ "번이고, 주소는 " + addr + "입니다.");
	}
}

public class Exam_04 {
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		
		System.out.print("인원수를 입력 : ");
		int inwon = in.nextInt();
		
		Member004[] mb = new Member004[inwon];
		for(int i=0; i<inwon; ++i) {
			System.out.print("이름을 입력 : ");
			String name = in.next();
			System.out.print("전화번호를 입력 : ");
			String tel = in.next();
			System.out.print("주소를 입력 : ");
			String addr = in.next();
			mb[i] = new Member004(name, tel, addr);
		}
		
		for(int i=0; i<inwon; ++i) {
			mb[i].disp();
		}
	}
}









profile
web developer

0개의 댓글