본문 바로가기
Back-End/Java

[java] 접근지정자

by LeeGangEun 2022. 2. 7.

접근 지정자란?

접근 지정자는 클래스혹은 클래스내의 멤버앞에 붙어서 다른 클래스의 접근을 제한하는 역할을 한다.

객체를 캡슐화하기 때문에, 객체에 다른 객체가 접근하는 것으로 허용할지, 말지를 지정할 필요가 있다.

  • public : 모든 접근 허용, 어떠한 클래스가 접근을 하던 모두 허용
  • protected : 같은 패키지와 상속받은 클래스, 클래스 내부에서만 접근 가능
  • default : 기본 지정자, 접근 지정자를 명시하지 않을 시 적용 됨, 같은 패키지와 클래스 내부에서만 접근 가능
  • private : 외부에서는 접근이 불가능, 클래스 내부에서만 접근 가능

------------------강사님 강의 메모 ------------------------

접근지정자
static - 정적, 실행전, 변화가 없다, 미리 준비됨
dynamic - 동적, 실행시(run-time), 변화가 있다, 미리준비되지 않음
-----------------------------------------------------------------------------------------
객체지향에서는
1. 클래스를 만들고
2. 클래스를 이용해서 인스턴스를 만들고
3. 인스턴스를 사용해서 코딩 진행
=> static은 인스턴스를 만들지 않고도 사용할 수 있게 해준다.
------------------------------------------------------------------------------------------
setter는 private 멤버변수를 대신 수정하는 메서드
getter는 private 멤버변수를 대신 읽어오는 메서드

 

 

-----------------------------7일차 연습문제 ---------------------------------

 

1. 5명의 학생을 저장하는 Student 배열을 만들어서 이름과 점수를 입력하고 출력하기.

import java.util.Scanner;

class Studentz {
		
		String name;
		int korea = 0, 
			english =0, 
			math =0;
		
		public Studentz(String name, int korea, int english, int math) {
			this.name = name;
			this.korea = korea;
			this.english = english;
			this.math = math;
		}
		public double getAvg() {
			return (korea + english + math) /3 ;
		}
}
public class Quiz_07_01 {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		Studentz[] stu = new Studentz[5];
		
		for(int i=0; i<stu.length; i++) {
			System.out.println("이름  국어 영어 수학 점수를 차례대로 입력하세요 ");
			String name = sc.next();
			int korea = sc.nextInt();
			int english = sc.nextInt();
			int math = sc.nextInt();
			
			stu[i] = new Studentz(name, korea, english, math);
		}
			System.out.println("=======================================");
			
		for(int i=0; i<stu.length; i++) {
			System.out.println (stu[i].name +"학생\n" + "국어 :" + stu[i].korea +"\n" +"영어 :" + stu[i].english+"\n" +"수학 :"+ stu[i].math +"\n");;
			
			sc.close();
		}		
}
}

2. 마우스 클래스를 생성하시오(왼쪽버튼, 오른쪽버튼, mouseMove() )

class Mouse{
	public String name;
	private int a;
	private int b;
	public void leftmouse() {System.out.println("왼쪽 버튼입니다.");}
	public void rightmouse() {System.out.println("오른쪽 버튼입니다.");}
	
	public void setName(String name) {
		this.name = name;
		System.out.println(name);
	}
	public void setMove(int a, int b) {
		this.a = a;
		this.b = b;
	}
	public void MouseMove() {
		System.out.println("(" + a + "," + b + ")");
	}
}
		
public class Quiz_07_2 {
	public static void main(String[] args) {
		Mouse mouse = new Mouse();
		mouse.setName("기본마우스");
		mouse.setMove(10, 5);
		mouse.leftmouse();
		mouse.rightmouse();
		mouse.MouseMove();
	}
}

3. 휠마우스 클래스를 마우스클래스를 상속받아서 생성하시오(스크롤휠 추가)

class MouseWhell extends Mouse{
	public void scroll() {System.out.println("스크롤휠 입니다.");}
}
	
public class Quiz_07_3 {
	public static void main(String[] args) {
		MouseWhell mw = new MouseWhell();
		mw.setName("휠마우스");
		mw.leftmouse();
		mw.rightmouse();
		mw.scroll();
		mw.setMove(33, 22);
		mw.MouseMove();	
	}
}

4. 3버튼 마우스 클래스를 휠마우스 클래스를 상속받아서 생성하시오(버튼 추가)

class ThreeBtnMouse extends Mouse{
	public void Threebtn() {System.out.println("3버튼을 눌렀습니다.");}
}

public class Quiz_07_4 {

	public static void main(String[] args) {
		
		ThreeBtnMouse tbm = new ThreeBtnMouse();
		tbm.setName("3버튼 마우스");
		tbm.leftmouse();
		tbm.rightmouse();
		tbm.Threebtn();
		tbm.setMove(3234, 2123);
		tbm.MouseMove();
	}

}

5. 2~4번의 인스턴스를 생성하시오.

public class Quiz_07_5 {

	public static void main(String[] args) {
		
		ThreeBtnMouse tbm = new ThreeBtnMouse();
		tbm.setName("3버튼 마우스\n");
		
		MouseWhell mw = new MouseWhell();
		mw.setName("휠 마우스\n");
		
		Mouse mouse = new Mouse();
		mouse.setName("기본 마우스\n");
	}

}