본문 바로가기
Java

[Java] 상속 메소드 오버라이드, 자료형, super 클래스

by happyhelen 2021. 7. 24.

* 자식 클래스는 부모 클래스의 모든 자원을 사용할 수 있지만 private 접근자의 속성과 메소드는 사용 불가능

 

[1] 메소드 오버라이

부모 클래스의 기능을 자식 클래스에서 재정의해서 사용하는 것

 

[2] 클래스도 데이터타입이다

 

[3] 상위 클래스를 호출할 때 super 키워드 이용

 

public class No3_Inheritance_Parents {
	// 필드
	public String name;
	public String ssn;
	
	// 생성자
	public No3_Inheritance_Parents(String name, String ssn) {
		this.name = name;
		this.ssn = ssn;
	}
	// 메소드
	double areaCircle(double r) {
		return 3.141592 * r * r;
	}

}

 

public class No3_Inheritance_Child extends No3_Inheritance_Parents{
	// 필드
	public int studentNo;
	
	// 생성자
	public No3_Inheritance_Child(String name, String ssn, int studentNo) {
		super(name, ssn);// 부모생성자 호출
		this.studentNo = studentNo;
		
	}
	// [1] 메소드 재정의
	// 메소드 자동생성: Source - Override/Implement Methods
	@Override
	double areaCircle(double r) {
		return Math.PI * r * r;
	}
	
	// [3] 상위클래스 호출
	void method() {
		System.out.println(areaCircle(3.3)); // 재정의된 메소드 호출 from 자식
		System.out.println(super.areaCircle(3.3)); // 재정의 전 메소드 호출 from 부모
	}
}

 

public class No3_Inheritance_Child_Ex {

	public static void main(String[] args) {
		
		//[2] 클래스도 자료형이다 ex) 여러 자식클래스로 배열생성 가능
		No3_Inheritance_Child some = new No3_Inheritance_Child("홍길동", "999999-2222222", 30);
		
		System.out.println(some.name);
		System.out.println(some.ssn);
		System.out.println(some.studentNo);
		
		some.method();

	}
}

'Java' 카테고리의 다른 글

[Java] 인터페이스  (0) 2021.07.27
[Java] 내부클래스, 익명클래스  (0) 2021.07.27
[Java] static과 private, Getter&Setter  (0) 2021.07.24
[Java] 객체, 클래스, 오버로딩  (0) 2021.07.24
[Java] String 다루기(1)  (0) 2021.07.22