게터(Getter), 세터(Setter) / 수식어(Modifier) / 객체 지향 프로그램의 3대 특징 / 클래스의 상속

losuif·2021년 7월 15일
0

학원 복습 - JAVA

목록 보기
18/32
post-thumbnail

👩🏼‍💻 게터(Getter) / 세터(Setter)

  • 필드의 데이터를 반환(게터)하고, 초기화(세터)시키는 목적으로 사용
  • alt + shift + s + r : 게터/세터 자동 생성 단축키
  • 필드 하나 당 게터,세터를 하나씩 가질 수 있다

게터 : 필드의 데이터를 반환

public 반환자료형 get필드명 (){
	return this.필드명
}
  • 반환자료형 : 필드의 자료형과 동일
  • 게터 이름 : "get+필드명"에서 필드명의 첫 글자는 대문자
  • 매개변수는 없음
  • this는 경우에 따라 생략 가능

세터 : 필드의 데이터를 초기화

public void set필드명 (매개변수){
	this.필드명 = 매개변수명;
}
  • 세터 이름 : "set+필드명"에서 필드명의 첫 글자는 대문자
  • 매개변수는 필드명과 동일



👩🏼‍💻 수식어(Modifier)

기능제어(=기능제한) 수식어

접근제어(=접근제한) 수식어

접근 제한 => 다른 대상이 참조 할 수 있는가를 판별
필드는 private / 생성자, 커스텀메서드, 클래스는 public
(모르면 필드는 private, 나머지는 public..^^)

  • private 동일 클래스 내부에서만 참조 가능
  • public 동일 클래스, 동일 패키지, 다른 클래스, 다른 패키지 모두에서 참조 가능
  • protected 동일 패키지에서는 public / 다른 패키지에서는 private 적용 BUT 다른 패키지에 있는 클래스라도 클래스간의 관계가 상속관계라면 public 적용
  • package(공백) 동일 패키지에서는 public / 다른 패키지에서는 private 적용

    ex) protected




👩🏼‍💻 객체 지향 프로그램의 3대 특징

캡슐화

필드를 private 수식어로 숨기거나 클래스의 소스를 숨김

상속

기존의 클래스를 다른 클래스가 재활용 (like 슈퍼클래스-서브클래스)

다형성

슈퍼클래스를 자료형으로 생성한 변수로 서브클래스의 객체를 참조



👩🏼‍💻 클래스의 상속

기존의 클래스가 존재, 새로운 클래스를 새로 만들 때, 일부 기능은 새롭게 만들어야 하지만, 일부 기능은 기존의 클래스에 만들어져 있는데, 이 경우 새롭게 만드는 클래스에서 기존에 만들어진 클래스를 재활용하는 것

ex)

메인클래스)

슈퍼클래스)

서브클래스)

=>메인클래스)

=>메인클래스)



Quiz)


Main_Display)

package pack_step2;

import java.util.Scanner;

public class Main_Display {

	public static void main(String[] args) {
		
		Scanner scanner = new Scanner(System.in);
		
		double[] num = new double[3];
		System.out.print("값 3개를 입력하세요 : ");
		for (int i = 0; i < num.length; i++) {
			num[i] = scanner.nextDouble();
		}
		
		scanner.close();
		
		Display display = new Display(num);
		double[] res = display.mtd();
		
		System.out.println("입력 값은 다음과 같습니다.");
		
		for (int i = 0; i < res.length; i++) {
			System.out.print(num[i]);
			
			if (i < res.length - 1) {
				System.out.print(", ");
			}
		}
		
	}

}

Display)

package pack_step2;

public class Display {

	private double num[];

	public Display(double[] num) {
		this.num = num;
	}
	
	public double[] mtd() {
		return num;
	} 
}

MaxDisplay)

package pack_step2;

public class MaxDisplay extends Display {

	public MaxDisplay(double[] num) {
		super(num);
	}

	public double mtdMax() {
		
		double[] num = super.mtd();
		double max = num[0];
		
		for (int i = 0; i < num.length; i++) {
			
			if (max < num[i]) {
				max = num[i]; 
			}
		}
		return max;
		
	}
}

Main_MaxDisplay)

package pack_step2;

import java.util.Scanner;

public class Main_MaxDisplay {

	public static void main(String[] args) {

		Scanner scanner = new Scanner(System.in);
		
		double[] num = new double[3];
		System.out.print("값 3개를 입력하세요 : ");
		for (int i = 0; i < num.length; i++) {
			num[i] = scanner.nextDouble();
		}
		
		scanner.close();
		
		MaxDisplay maxDisplay = new MaxDisplay(num);
		
		double[] numArray = maxDisplay.mtd();
		System.out.println("입력 값은 다음과 같습니다.");
		for (int i = 0; i < numArray.length; i++) {
			System.out.print(num[i]);
			
			if (i < numArray.length - 1) {
				System.out.print(", ");
			}
		}
		
		double max = maxDisplay.mtdMax();
		System.out.println("\n최댓값 : " + max);

	}
}

0개의 댓글