728x90
반응형
코드의 재사용
- 개발비용을 줄이고 신뢰성과 생산성을 높임
- 객체 재사용 : 기존 객체의 인터페이스를 맞추어 새로운 프로그램에서 재사용
- 상속(inheritance) : 새로 필요한 객체*가 기존 객체**와 유사한 경우, 기존 객체의 코드를 상속받고 추가되는 부분만 작성하여 객체를 생성하는 방법
*새로 필요한 객체 : 자식 객체(child object), 하위 객체(sub object)
**기존 객체 : 부모 객체(parent object), 상위 객체(super object)
자바의 캡슐화
- 캡슐화된 클래스를 조합하여 프로그램 구성 (class 키워드)
- 클래스 내부의 멤버들을 캡슐화하기 위해 접근 제어자 사용
> public - 모든 클래스에서 접근 가능
> protected - 같은 패키지의 클래스와 자식 클래스에서 접근 가능
> default - 같은 패키지의 클래스에서만 접근 가능
> private - 외부 클래스에서의 접근 불가
public | protected | default | private | |
같은 패키지의 클래스 | O | O | O | X |
다른 패키지의 클래스 | O | X | X | X |
자식 클래스 | O | O | X | X |
자바의 상속 구현
- 부모 클래스의 중복된 멤버를 상속받아 자식 클래스 생성
ex)
class StudentInfo{
protected String dept, stdNo, name; // ❶
StudentInfo(String dept, String stdNo, String name){
this.dept = dept;
this.stdNo = stdNo;
this.name = name;
}
public void getStdInfo(){
System.out.println("** 학생 정보 출력 **");
System.out.println("학과 : " + dept);
System.out.println("학번 : " + stdNo);
System.out.println("이름 : " + name);
}
}
class StudentScore extends StudentInfo{
private int kor, eng, math, sum;
private double ave;
StudentScore(String dept, String stdNo, String name, int kor, int eng, int math){
super(dept, stdNo, name);
this.kor = kor;
this.eng = eng;
this.math = math;
this.sum = 0;
this.ave = 0.0;
}
public int getSum(){
sum = kor + eng + math;
return sum;
}
public double getAve(){
ave = sum/3.0;
return ave;
}
public void getStdInfo(){
super.getStdInfo();
}
public void getStdScore(){
System.out.println("** 학생 점수 출력 **");
System.out.println("국어 : " + kor);
System.out.println("영어 : " + eng);
System.out.println("수학 : " + math);
System.out.println("총점 : " + getSum());
System.out.println("평균 : " + getAve());
}
}
class Ex_Student{
public static void main(String args[]){
StudentInfo s_i = new StudentInfo("컴퓨터과학", "20072135", "홍길동");
StudentScore s_s = new StudentScore("컴퓨터과학과", "20072140", "홍길순", 91, 80, 95);
s_i.getStdInfo(); System.out.println();
s_s.getStdInfo();
s_s.getStdScore();
}
}
출력 >>>
더보기
학과 : 컴퓨터과학과
학번 : 20072135
이름 : 홍길동
** 학생 정보 출력 **
학과 : 컴퓨터과학과
학번 : 20078140
이름 : 홍길순
** 학생 점수 출력 **
국어 : 91
영어 : 80
수학 : 95
총점 : 266
평균 : 88.66666666666667
728x90
반응형
'자료구조' 카테고리의 다른 글
[자료구조] 이중 연결 리스트 (0) | 2022.01.02 |
---|---|
[자료구조] 순차 자료구조 (0) | 2022.01.01 |
[자료구조] 다항식 (0) | 2022.01.01 |
[자료구조] 소프트웨어와 자료구조 (0) | 2021.12.05 |
[자료구조] 자료구조 개요 (0) | 2021.12.04 |