20240816수업
field 변수를 private 으로 설정했을때 값을 가져오거나 수정하려면 getter/sestter 만들기
getter | |
접근 제한자 | public(외부에서 수정하기 위함) |
return타입 | field타잆 |
메소드 이름 | get+필드 이름 |
rerturn값 | field값 |
setter | |
접근 제한자 | public(외부에서 수정하기 위함.) |
return타입 | void |
메소드 이름 | set+필드 이름 |
매개변수 타입 | field 타입 |
package ex01;
import java.util.Scanner;
class Student {
//Fields-외부에서 접근하지 못하도록 private로 작업할 것
// 입력:번호,이름,국어,영어,수학
private int num;
private String name;
private int kor;
private int eng;
private int mat;
// 출력용: 번호,이름,국어,영어,수학, 총점, 평균, 학점
private int tot;
private double avg;
private char grade;
//수정:setter
public void setNum(int num) { //void는 Student class로 return해준다.
this.num=num;
}
public void setName(String name) {
this.name = name;
}
public void setKor(int kor) {
if(0<=kor&&kor<=100) { //잘못된 데이터 입력을 거를 수 있다.
this.kor=kor;
}else this.kor=0;
}
public void setEng(int eng) {
this.eng = eng;
}
public void setMat(int mat) {
this.mat = mat;
}//tot,avg,grade식은 수정필요X
//가져오기 getter
public int getNum() {
return this.num;
}
public String getName() {
return name;
}
public int getKor() {
return kor;
}
public int getEng() {
return eng;
}
public int getMat() {
return mat;
}
public int getTot() {
return tot;
}
public double getAvg() {
return avg;
}
public char getGrade() {
return grade;
}
//Constructor
public Student() {
Scanner in = new Scanner(System.in);
System.out.println("입력:번호,이름,국어,영어,수학");
String Line = in.nextLine();
String [] li = Line.trim().split(",");
this.num = Integer.parseInt( li[0].trim() );
this.name = li[1].trim();
this.kor = Integer.parseInt( li[2].trim() );
this.eng = Integer.parseInt( li[3].trim() );
this.mat = Integer.parseInt( li[4].trim() );
}
// Methods
private void getTotal() {
this.tot = this.kor + this.eng + this.mat;
}
private void getAverage() {
this.avg = (this.kor + this.eng + this.mat) / 3.0;
}
private void getStudentGrade() {
// 0 1 2 3 4 5 6 7 8 9 10
char [] g = {'F','F','F','F','F','F','D','C','B','A','A'};
this.grade = g[(int) this.avg / 10];
}
public void display() {
String title = "번호 이름 국어 영어 수학 총점 평균 학점";
String msg = title + "\n";
String fmt = "%d %s %d %d %d %d %.3f %c";
// process()
getTotal();
getAverage();
getStudentGrade();
msg += String.format(fmt,
this.num, this.name,
this.kor, this.eng, this.mat,
this.tot, this.avg, this.grade );
System.out.println(msg);
}
// toString
@Override
public String toString() {
return "Student [num=" + num + ", name=" + name + ", kor=" + kor + ", eng=" + eng + ", mat=" + mat + ", tot="
+ tot + ", avg=" + avg + ", grade=" + grade + "]";
}
}
package ex01;
import java.util.Scanner;
/*
번호,이름,국어,영어,수학
1,사나,70,80,90
2,모모,0,70,100
3,쯔위,70,90,90
4,정연,80,90,70
5,원영,90,90,89
6,유진,100,100,100
*/
public class StudentTest01 {
public static void main(String[] args) {
Student s1 = new Student(); //class Student호출
s1.display();
//s1.tot = 100; // 외부에서 총점을 수정하면 안됨
//System.out.println(s1.tot); // tot 는 private
// 성적을 수정하려면 외부에서 field 변수를 접근할 수있는 기술 필요
// >>getter / setter 함수를 사용
System.out.println( s1.getNum() );
}
}
new 연산자를 통해 메모리(Heap 영역)에 데이터를 저장할 공간을 할당받고 그 공간의 참조값(reference value /해시코드)을 객체에게 반환하여 주고 이어서 생성자를 호출하게 된다. instance를 조정하기 위해서는 new 연산자를 통해 참조값을 저장한 객체로만 접근이 가능하다.
클래스 | 객체변수 | = | new | 클래스(); |
자료형 | 참조값 저장(instance) | 메모리(Heap) 할당 instance 생성, 참조값 return(⇾객체) | 생성자 호출 |
'JAVA' 카테고리의 다른 글
[java] action , abstract, interface (0) | 2024.08.21 |
---|---|
[java]객체 개념 (0) | 2024.08.20 |
[java]Constructor, Override (0) | 2024.08.18 |
[java]ArrayList (자동배열)로 성적 입력 프로그램 만들기 (0) | 2024.08.18 |
[java]정규식 (Regular Expression) (0) | 2024.08.17 |