자료구조

[JAVA / 자바] 객체지향 프로그래밍

Seunghyun_KO 2021. 12. 26. 09:00
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

 

자바의 상속 구현

 - 부모 클래스의 중복된 멤버를 상속받아 자식 클래스 생성

출처: IT COOKBOOK

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