본문 바로가기
Java (자바)

쉽게 따라하는 Java (자바) 독학 _ 상속 (Inheritance)

by Ecoder 2022. 12. 14.

Java (자바) 독학 제어문 _ 상속 (Inheritance)

 

1. 상속 (Inheritance)

   - 이미 존재하는 클래스의 기능 혹은 데이터를 받아서 사용하는 것

   - 부모 클래스 (Super class): 상속을 하는 클래스

   - 자식 클래스 (Sub class): 상속받는 클래스

   - protected, public 변수는 상속 가능 / private와 생성자는 상속 불가능

   - super();를 이용하여 부모 클래스의 기본 생성자 호출

   - override 가능

          ** override란 부모로부터 상속 받은 매소드의 일부를 수정하는 개념

   - 모든 클래스의 최상위 클래스는 Object라는 클래스로 자동 설정되어 있음

   - class 앞에 final을 붙이면 해당 class는 상속 할 수 없음

          ** 지역변수 앞 final은 값 변경이 불가능

 

 

2. 상속 Test

Class Name: InheritanceTest_01

 

Class Name: InheritanceMain_01

public static void main(String[] args) 체크

 

Superclass 옆 Browse... 클릭

 

 

Choose a type에 InheritanceTest_01 검색 후 동일한 Matching item 선택 후 Ok

 

 

Superclass 확인 후 Finish로 Class 생성 완료

 

 

InheritanceTest_01 코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
 
public class InheritanceTest_01 {
    public static String name;
    protected static int kor;
    protected static int eng;
    protected static double avg; // 변수 선언
 
    public InheritanceTest_01() { // 생성자
        super();
    }
 
    public InheritanceTest_01(String name, int kor, int eng) {
        super();
        this.name = name;
        this.kor = kor;
        this.eng = eng;
        avgcal();
    }
 
    public void avgcal() { // 평균 구하는 매소드
        this.avg = (this.kor + this.eng) /2.0;
    }
}
 
cs

 

InheritanceMain_01 코드

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
 
public class InheritanceMain_01 extends InheritanceTest_01 {
    protected static int mat; // 신규 변수 선언
    
 
    public InheritanceMain_01() { // 생성자
        super();
    }
 
 
    public InheritanceMain_01(int mat) {
        super();
        this.mat = mat;
        avgcal();
    }
    
    @Override
    public void avgcal() { // overriding
        this.avg = (this.kor + this.eng + this.mat) /3.0;
    }
    
    
    public static void main(String[] args) {
        InheritanceTest_01 t1 = new InheritanceTest_01("홍길동"10090);
        InheritanceMain_01 m1 = new InheritanceMain_01(88);
        System.out.printf("평균 = %.2f%n", avg);
        
        kor = 100; // 특별한 변수 선언 없이도 사용 가능
        eng = 90;
        mat = 88;
        avg = (kor + eng + mat) /3.0;
        System.out.printf("평균 검산 = %.2f%n", avg);
    }
 
}
cs

 

저장(ctrl + s) 후 F11을 눌러 출력되는 내용 확인하기

 

 

3. 과제

저번에 만든 Students 클래스를 부모 클래스로 하는 Stu_02 클래스를 만들어보세요.

Stu_02 클래스에서 이름, 국어, 수학, 영어 점수를 대입하고, Students에 있는 평균을 구하는 매소드를 이용해서 평균을 구해보세요.

 

반응형

댓글