[0] 접근제한자(Access Modifier)
- 접근 제한자(Access Modifier)
[1] public(모든) = 공개
: 적용대상 = 클래스, 필드, 생성자, 메소드
: 모든 클래스에서 접근 가능
[2] protected(패키지)
: 적용대상 = 필드, 생성자, 메소드
: 자식클래스가 아닌 다른 패키지에 소소된 클래스는 접근 불가능
[3] default(상속 클래스) = 생략
: 적용대상 = 클래스, 필드, 생성자, 메소드
: 다른 패키지에 소소된 클래스는 접근 불가능
[4] private(본인 클래스) = 비공개
: 적용대상 : 필드, 생성자, 메소드
: 자신이 아닌 다른 클래스에서 접근 불가능
// class
// 필드
// 1.필드
public int public1;
protected int protected1;
int default1;
private int private1;
// 생성자
public A(){
}
public void public2() {
System.out.println("접근 제한자 public 메소드");
}
public void protected2() {
System.out.println("접근 제한자 protected 메소드");
}
public void default2() {
System.out.println("접근 제한자 default 메소드");
}
public void private2() {
System.out.println("접근 제한자 private 메소드");
}
// 메소드
public static void main(String[] args) {
// A객체 생성
A a = new A();
a.public1 = 1;
a.protected1 = 2;
a.default1 = 3;
a.private1 = 4;
System.out.println("public1 : " + a.public1);
System.out.println("protected1 : " + a.protected1);
System.out.println("default1a : " + a.default1);
System.out.println("private1 : " + a.private1);
// 3.메소드
// 객체의 메소드 호출(실행)
a.public2();
a.protected2();
a.default2();
a.private2();
// main
public static void main(String[] args) {
// (1) A 객체 생성
// (2) a의 필드값 작성
// (3) a의 필드값 출력
// (4) a의 메소드 호출
// 실행(main) 메소드
// (1) A 객체 생성
A a = new A();
// (2) a의 필드값 작성
a.public1 = 1;
a.protected1 = 2;
a.default1 = 3;
// a.private1 = 4;
// 접근제한자를 A클래스에서 private으로 선언해서
// private1 필드는 A클래스에서만 사용할 수 있다...
System.out.println("public1 : " + a.public1);
System.out.println("protected1 : " + a.protected1);
System.out.println("default1 : " + a.default1);
// System.out.println("private1 : " + a.private1);
// (4) a의 메소드 호출
a.public2();
a.protected2();
a.default2();
// a.private2();
// main2
public class C {
public static void main(String[] args) {
// (1) A 객체 a생성
A a = new A();
// (2) a의 필드값 선언 + 출력
a.public1 = 1;
// a.protected1 = 2;
// a.default1 = 3;
// a.private1 = 4;
System.out.println("public1 : " + a.public1);
// System.out.println("protected1 : " + a.protected1);
// System.out.println("default1a : " + a.default1);
// System.out.println("private1 : " + a.private1);
// (3) a의 메소드 호출
a.public2();
// a.protected2();
// a.default2();
// a.private2();
// protected : 패키지가 달라도 상속을 받는 사용 가능
// defoult : 패키지가 다르면 안됨.
[1] Caleulator (class와 main)
// class
[1] 필드 작성안해도됨
[2] 생성자 작성안해도됨 (대신 매계변수 생성시 필수)
[3] 메소드
void타입을 제외한 모든 메소드는 return값을 갖는다.
public Calculator(){
}
// [3] 메소드
// void타입을 제외한 모든 메소드는 return값을 갖는다.
int add(int x, int y) {
// x+y
int result = x + y;
return result; // 메소드값의 변환이 int여서 return 0; 초기값으로 나온다
// return x+y
}
double avg(int x, int y) {
// x X y
double result = add(x, y) / 2.0; // 위에 있는 메소드를 쓸수 있다 만약에 1,3을 각각 넣으면 int 타입 result는 4가 되고 double타입의 result는 2.0가 된다고 정의
return result;
// return x X y
// int avg1( int x, int y){
// // x X y
// double result =(int) add(x, y) / 2; // 위에 있는 메소드를 쓸수 있다 만약에 1,3을 각각 넣으면 int 타입 result는 4가 되고 double타입의 result는 2.0가 된다고 정의
// return 0;
// // return x X y
// main
import java.util.Scanner;
public class CalculatorMain {
public static void main(String[] args) {
// (1) Scanner 객체
Scanner sc = new Scanner(System.in);
// (2) Calculator 객체
Calculator cal = new Calculator();
// 앞에 있는 Calculator와 뒤에 있는 Calculator의 차이점은?
// clss 와 생성자 차이 이다
System.out.println("x값 입력 : ");
int x = sc.nextInt();
System.out.println("y값 입력 : ");
int y = sc.nextInt();
System.out.println("x+y : " + cal.add(x,y));
System.out.println("x*y/2 : " + cal.avg(x,y));
// 메소드의 return 값을 변수에 담을 수 있다
double c = cal.add(x,y);
double d = cal.avg(x,y);
System.out.println("c : " + c);
System.out.println("d : " + d);
System.out.println(c+d);
[2] Member (class와 main) 리턴값 공부!!!
public class Member {
// 캡슐화
// : 관련된 필드(속성)와 메소드(동작)을 하나로 묶고, 실제 구현 내용을 외부로부터 감추는 기법(정보은닉)
// : 특정 필드나 메소드를 사용자가 조작할 수 없도록 숨겨 놓은것!
// String타입의 아이디(id), 비밀번호(pw), 이름(name),
// 생년월일(birth), 이메일(email), 연락처(phone)
private String id;
private String pw;
private String name;
private String birth;
private String emali;
private String phone;
// [2] 생성자
// (1) 기본생성자, 매개변수 생성자
public Member(){
}
Member(String id, String pw, String name, String birth, String emali, String phone) {
this.id = id;
this.pw = pw;
this.name = name;
this.birth = birth;
this.emali = emali;
this.phone = phone;
}
// [3] 메소드
// (1)정보출력 메소드
void MerInfo() {
System.out.println("아이디 : " + id);
System.out.println("비번 : " + pw);
System.out.println("이름 : " + name);
System.out.println("birth : " + birth);
System.out.println("이메일 : " + emali);
System.out.println("번호 : " + phone);
}
// 아이디 입력 메소드
void setId(String id) {
this.id = id;
}
// 아이디 출력 메소드
String getId(){
return id;
}
// class
public class MemberMain {
public static void main(String[] args) {
// (1) Member객체 생성, (2) id = "icia", (3) pw = "1234", (4) 메소드 사용
// Member member = new Member("icia", "1234", "인천일보", "230331", "21321321","ㄴㅇㄴㅇ");
Member member = new Member();
// 아이디만 출력
member.setId("icia"); // >> private 필드에 접근하는 방법
// member.id = "icia"; >> 그냥 필드에 접근
System.out.println("id : " + member.getId());
// member.pw = "1234";
// System.out.println("pw : " + member.pw);
member.MerInfo();
[3] Member2 (class와 main)
// class
// 필드
private String id;
private String pw;
private String name;
private String birth;
private String email;
private String phone;
// 생성자
public Menber(){
}
// Alt + Insert 사용시 자동 생성!!!
public Menber(String id, String pw, String name, String birth, String email, String phone) {
this.id = id;
this.pw = pw;
this.name = name;
this.birth = birth;
this.email = email;
this.phone = phone;
}
// 메소드 Alt + Insert(단축키)!!! 오버라이드 생성!!
// Alt + Insert 사용시 자동 생성!!!
// geter , seter
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getPw() {
return pw;
}
public void setPw(String pw) {
this.pw = pw;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getBirth() {
return birth;
}
public void setBirth(String birth) {
this.birth = birth;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
// Alt + Insert 사용시 자동 생성!!!
// toString
@Override // 오버라이딩 == 출력이 된다.
public String toString() {
return "Member[" +
"id=" + id +
", pw=" + pw +
", name=" + name +
", birth=" + birth +
", email=" + email +
", phone=" + phone +
']';
}
// main
1. 정보입력
2. 정보출력
3. 정보 수정
4. 종료
2. 정보출력
3. 정보 수정
4. 종료
// 기본변수 생성 및 배열 지정!
Scanner sc = new Scanner(System.in);
Menber[] member = null;
int Mem = 0;
boolean run = true;
int menu;
// 기본 출력 (while문으로 반복)
while (run) {
System.out.println();
System.out.println("1. 정보입력 | 2. 정보출력 | 3. 정보수정 | 4. 종료");
System.out.println();
System.out.println("선택 : ");
menu = sc.nextInt();
// 기본 입력 (switch문으로 반복) case1 :
switch (menu) {
case 1:
System.out.println("몇명 : ");
Mem = sc.nextInt();
member = new Menber[Mem];
for (int i = 0; i < member.length; i++) {
Menber mem = new Menber();
System.out.println((i + 1) + "번");
System.out.println("아이디 : ");
mem.setId(sc.next());
System.out.println("비번 : ");
mem.setPw(sc.next());
System.out.println("이름 : ");
mem.setName(sc.next());
System.out.println("생년 : ");
mem.setBirth(sc.next());
System.out.println("이메일 : ");
mem.setEmail(sc.next());
System.out.println("번호 : ");
mem.setPhone(sc.next());
member[i] = mem;
}
break;
// 기본 입력 (switch문으로 반복) case2 : 조원을 출력하기 위한 for문으로 반복해서 마지막 메소드 toString 사용
case 2:
for (int i = 0; i < member.length; i++) {
System.out.println((i + 1) + "조원");
System.out.println(member[i].toString());
System.out.println();
}
break;
// 기본 입력 (switch문으로 반복) case3 : 정보수정을 위해 조건문으로 메소드을 입력받는다(sc.next())
// 새로운 배열을 입력받기 위해 member로 0으로 초기화
case 3:
System.out.println("정보 수정 : ");
String Name = sc.next();
for (int i = 0; i < member.length; i++) {
Menber mem = new Menber();
if (Name.equals(member[i].getName())) {
System.out.println((i + 1) + "번");
System.out.println("아이디 : ");
mem.setId(sc.next());
System.out.println("비번 : ");
mem.setPw(sc.next());
System.out.println("이름 : ");
mem.setName(sc.next());
System.out.println("생년 : ");
mem.setBirth(sc.next());
System.out.println("이메일 : ");
mem.setEmail(sc.next());
System.out.println("번호 : ");
mem.setPhone(sc.next());
// 새로운 정보 수정!
member[i] = mem;
}
}
break;
// 기본 입력 (switch문으로 반복) case4,5 : 마지막 4.5은 switch문에 고정문법이다.
case 4:
run = false;
System.out.println("프로그램 종료");
break;
default:
System.out.println("다시 입력하세요");
break;
[4] Member2 (main) 선생님 코드!!
package Java0331_1;
import java.util.Arrays;
import java.util.Scanner;
public class Members {
// main 메소드 사용!!
// 1. 정보입력
// 2. 정보출력
// 3. 정보수정
// 4. 종료
public static void main(String[] args) {
// 입력을 받기 위한 Scanner 객체
Scanner sc = new Scanner(System.in);
// 한 사람의 정보를 담기 위한 Member 객체
Member member = new Member();
// 회원들의 정보를 담기 위한 Member 배열
Member[] members = new Member[0];
// members에는 어떤 타입의 데이터 들어올 수 있는가?
// Member클래스의 필드값 (여러개)
String[] strArr = null;
// 프로그램 실행을 위한 변수
boolean run = true;
// 프로그램 실행!
while(run){
System.out.println("=========================================");
System.out.println(" 1.정보입력 | 2.정보출력 | 3.정보수정 | 4.종료");
System.out.println("=========================================");
System.out.print("선택 >> ");
// 항목을 선택하기 위한 변수 menu에 숫자를 입력받는다.
int menu = sc.nextInt();
switch (menu){
case 1:
// 한사람의 정보를 입력받기 위한 member 객체
// 초기화 하기 위해서 new Member() 실행
member = new Member();
// 한사람의 정보를 입력받기 위해서
// 기존에 있던 members배열을 복사하고 크기를 1증가 시킨다.
members = Arrays.copyOf(members, members.length+1);
// 정보 입력
System.out.print("아이디 >> ");
// Member클래스의 필드 id의 접근제한자를 private로 설정했기 때문에
// member.id = sc.next();
member.setId(sc.next());
// 입력(저장) : setter(), set
// 출력 : getter(), get
System.out.print("비밀번호 >> ");
member.setPw(sc.next());
System.out.print("이름 >> ");
member.setName(sc.next());
System.out.print("생년월일 >> ");
member.setBirth(sc.next());
System.out.print("이메일 >> ");
member.setEmail(sc.next());
System.out.print("연락처 >> ");
member.setPhone(sc.next());
// 종이에 작성한 영역
// 작성한 정보를 파일에 담는 과정
members[members.length-1] = member;
// members[i] = member;
// 회원목록 파일에 회원정보를 담는다.
break;
case 2:
// 배열의 크기만큼 반복문 실행
for(int i=0; i< members.length; i++){
// 회원정보 출력
System.out.println(members[i].toString());
}
break;
case 3:
// 어떤 사람의 정보를 수정할지 선택
// 아이디(id)를 기준으로 검색
System.out.print("변경할 아이디 >> ");
String id = sc.next();
// 해당 아이디 존재 여부 확인
int check = 0;
// 회원의 명수 만큼 반복
for(int i=0; i<members.length; i++){
// 입력한 아이디(id)가
// 회원목록에 있는 아이디(members[i].getId())와 같은지 확인
if(id.equals(members[i].getId())){
// member객체 초기화
member = new Member();
// 아이디 저장
member.setId(id);
// 패스워드 변경
System.out.print("비밀번호 >> ");
member.setPw(sc.next());
// 이름 변경
System.out.print("이름 >> ");
member.setName(sc.next());
// 생년월일 변경
System.out.print("생년월일 >> ");
member.setBirth(sc.next());
// 이메일 변경
System.out.print("이메일 >> ");
member.setEmail(sc.next());
// 연락처 변경
System.out.print("연락처 >> ");
member.setPhone(sc.next());
// 정보 입력시
// members[members.length-1] = member;
// 정보 수정
members[i] = member;
check++;
}
}
// for문 밖에서 아이디 유무 확인
if(check==0){
System.out.println("해당하는 아이디가 없습니다.");
}
break;
case 4:
// 프로그램 종료(반복문 종료)를 위해
// run의 값을 true에 false로 변경!
run = false;
break;
default:
System.out.println("잘못 입력했습니다.");
break;
}
}
}
}
'IT코딩공부!' 카테고리의 다른 글
#11 this, super, final 개념 정리 (+ 오라클 설치) (0) | 2023.04.04 |
---|---|
#10 형성 : day9 복습, 하나의 객체(info)에서 // 여러타입을 참조할 수 있는 방식을 제공해준다. (+추상클래스 + Util) (0) | 2023.04.03 |
#8 day7복습, 팀별 과제 수행, Intelli J 설치 및 이클립스 적용 (0) | 2023.03.30 |
#7 day6복습, 필드,생성자,메소드(main)공부 (0) | 2023.03.29 |
#6 day5복습, array(1,2차원 배열 공부) (0) | 2023.03.28 |