접근 제어자 : 변수, 메소드 등의 앞에 붙여 접근을 제한함
private > default > protect > public public으로 갈수록 접근의 제한이 작아짐.
private - 외부 class에서 접근 불가. 같은 class 내에서는 접근 가능
==> 정보 은닉/캡슐화 : 해당 하는 변수를 private 로묶어 set, get 메소드를 통해 우회적으로 접근하여
그 값을 변경하는 기술, 데이터를 안정적으로 운용가능
defautl - 접근 관련 modifier를 지정하지 않은 경우이다. 이는 동일 패키지에 속하는 클래스만 접근할 수 있다.
protect - 동일 패키지와 동일 패키지에 포함되지는 않지만, 하위클래스 관계에 있는 클래스에 접근할수 있다.
public - 모든 클래스에 의해 접근할 수 있다. 접근 제약이 없다.
생성자를 쓰는이유 - 일반 변수는 바로 초기화 할수 있지만, 멤버변수나 객체변수는 그럴수 없기때문에 사용한다.
ex
정보은닉
package oop1;
public class Member {
private String name;
private int age;
public Member(){}
public Member(String name, int age){
super();
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
package oop1;
public class MemberMain {
public static void main(String[] args) {
Member m = new Member("홍길동", 20);
m.setName("황준홍");
m.setAge(10);
System.out.println("이름 : "+m.getName());
System.out.println("나이 : "+m.getAge());
}
}
ex
package phone;
public class PhoneInfo {
// 상태(name, phoneNo, birth) - private
// 기능 (show) - 출력
private String name;
private String phoneNo;
private String birth;
public PhoneInfo() {
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPhoneNo() {
return phoneNo;
}
public void setPhoneNo(String phoneNo) {
this.phoneNo = phoneNo;
}
public String getBirth() {
return birth;
}
public void setBirth(String birth) {
this.birth = birth;
}
public PhoneInfo(String name, String phoneNo, String birth) {
this.name = name;
this.phoneNo = phoneNo;
this.birth = birth;
}
public void PhoneShow() {
System.out.println("이름 : " + name);
System.out.println("번호 : " + phoneNo);
System.out.println("생일 : " + birth);
System.out.println();
}
}
package phone;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Manager mana = new Manager();
Scanner sc = new Scanner(System.in);
while (true) {
System.out.print("1.추가 2.전체출력 3.검색 4.수정 5.삭제 6.종료 : ");
int num = sc.nextInt();
switch (num) {
case 1:
mana.addPhoneInfo();
break;
case 2:
mana.listPhoneInfo();
break;
case 3:
mana.searchPhoneInfo();
break;
case 4:
mana.updatePhoneInfo();
break;
case 5:
mana.deletePhoneInfo();
break;
case 6:
System.out.println("종료");
return;
}
}
}
}
package phone;
import java.util.Scanner;
public class Manager {
// PhoneInfo 배열 생성
int count = 0;
PhoneInfo arr[] = new PhoneInfo[2];
Scanner sc = new Scanner(System.in);
public Manager() {
}
public void addPhoneInfo() {
// 배열에 PhoneInfo 객체를 생성에서 추가
System.out.print("이름 : ");
String name = sc.nextLine();
System.out.print("번호 : ");
String phoneNo = sc.nextLine();
System.out.print("생일 : ");
String birth = sc.nextLine();
arr[count++] = new PhoneInfo(name, phoneNo, birth);
}
public void listPhoneInfo() {
// 전체 전화번호 목록 출력
for (int i = 0; i < count; i++) {
arr[i].PhoneShow();
}
}
public void searchPhoneInfo() {
// 이름 => PhoneInfo객체 찾는 역할
String str = sc.nextLine();
for (int i = 0; i < count; i++) {
if (arr[i].getName().equals(str)) {
arr[i].PhoneShow();
break;
} else {
System.out.println("일치하는 이름이 없습니다. ");
}
}
}
public void updatePhoneInfo() {
System.out.println("번호를 수정할 대상의 이름을 입력하세요 : ");
String str = sc.nextLine();
int index = -1;
for (int i = 0; i < count; i++) {
if (arr[i].getName().equals(str)) {
index = i;
System.out.println("전화번호 : ");
String phoneNo = sc.nextLine();
arr[i].setPhoneNo(phoneNo);
}
}
if (index == -1) {
System.out.println("대상을 찾을 수 없습니다. ");
}
}
public void deletePhoneInfo() {
Scanner sc = new Scanner(System.in);
System.out.println("삭제 대상 입력 : ");
String str = sc.nextLine();
for (int i = 0; i < count; i++) {
if (arr[i].getName().equals(str)) {
arr[i] = arr[i + 1];
arr[count] = null;
count--;
System.out.println("해당 데이터가 삭제되었습니다. ");
} else {
System.out.println("해당 데이터가 없습니다. ");
}
}
}
}
'개발 > JAVA' 카테고리의 다른 글
[JAVA] 상속에 대해 (0) | 2019.01.21 |
---|---|
[JAVA] 메소드 오버로딩, 메소드 오버라이딩 (0) | 2019.01.16 |
[JAVA] 객체, 생성자 (0) | 2019.01.11 |
[JAVA] 선택정렬, 버블정렬 (0) | 2019.01.11 |
[JAVA] 배열, 2차원배열 n명의 학생 점수 총점 평균 구하기, 배열 이용해 학생 점수 구하기 (0) | 2019.01.10 |
댓글