JAVA
Test113.java / 클래스 고급 - 상속 / 상속의 기본개념 (Inheritance)
universedevelope
2022. 10. 22. 21:46
/*==============================
■■■ 클래스 고급 ■■■
==============================*/
// 상속(Inheritance)
/*
○ 상속(Inheritance)이란
새로 설계(생성)하고자 하는 클래스가
이미 설계되어 있는 다른 클래스의 기능과 중복되는 경우
이미 설계된 클래스의 일부분이나 전체 구조를 공유할 수 있도록 하는 기능을 의미한다.
즉, 상속은 객체를 좀 더 쉽게 만들 수 있는
고수준의 재사용성(reusability)을 확보하고
객체간의 관계를 구성함으로써
객체 지향의 또 다른 특징인 『다형성』의 문법적 토대가 된다.
상속은 기존 프로그램의 클래스 내용을 공유함으로써
중복된 코드들을 재작성할 필요 없이
반복적이고 세부적인 작업을 처리하지 않기 때문에
프로그램을 작성하는 시간을 절약할 수 있고
유지보수를 편리하게 할 수 있으며,
프로그램의 길이도 짧아지게 되낟.
또한, 이미 작성된 프로그램들은 앞서 테스트되었기 때문에
오류를 줄일 수 있어 현재 작성 중인 프로그램에만 전념할 수 있다.
※ 주의할 점
자바는 『다.중.상.속』을 지원하지 않기 때문에
두 개 이상의 클래스로부터 상속받을 수 없다.
자바는 『단.일.상.속.』만 지원한다.
*/
// 상위 클래스 == 부모 클래스 == Super 클래스 → 물려주는 클래스
// 하위 클래스 == 자식 클래스 == Sub 클래스 → 상속받는 클래스
class SuperTest113 // 부모 클래스
{
protected double area;
// 부모 클래스의 생성자(생성자는 상속되지 않는다.)
SuperTest113() // 원칙적으로는 자식클래스에서 접근 안돼나, 같은 패키지(디렉토리)에 있어서
// 이 파일에 한해서만 접근이 된다.(but 결국은 생성자라 상속안됀다.)
{
System.out.println("Super Class...");
}
void write(String title)// 원칙적으로는 자식클래스에서 접근 안돼나, 같은 패키지(디렉토리)에 있어서
// 이 파일에 한해서만 접근이 된다.
{
System.out.println(title + " - " + area);
}
}
public class Test113 extends SuperTest113 // 자식 클래스, // (다중상속불가)SuperTest114, SuperTest115....
{ // --------------------
//double area = 10.1234;
Test113()
{
super(); // => 단일 클래스의 this 와 같다.(해당 클래스 → 부모클래스 → 생성자 호출)
// ↑↑↑↑↑↑
// SuperTest113(); ○ → 생성자 내부에서 생성자를 호출하기(그러나 가장 먼저 실행되어야 함....)
System.out.println("Sub Class....");
// SuperTest113(); Ⅹ →
}
public void circle()
{
int r = 10;
area = r * r * 3.141592;
write("원");
}
public void actionRect()
{
int w =20, h = 5;
area = w * h;
write("사각형");
}
public static void main(String[] args)
{
Test113 ob = new Test113();
/*
Super Class...
Sub Class....
계속하려면 아무 키나 누르십시오 . . .
*/
ob.circle();
// 원 - 314.1592
ob.actionRect();
// 사각형 - 100.0
}
}
728x90