클래스 외부에서 클래스의 변수(필드)에 접근할 수 있는 방법은 2가지.
Student student = new Student();
1) 바로 접근하는 방법. student.studentName
2) 매서드로 접근하는 방법. student.getStudentName()
자바에서는 보안문제로 2번을 주로 사용하게 됨
package chapter20230814.student;
public class Student {
int studentID; // 학번
String studentName; // 이름
int grade; // 학년
String address; // 주소
/*
*/
public void showStudentInfo() {
// 저장된 이름, 주소를 알려줌
System.out.println(studentName + "," + address); // 이름, 주소
}
public String getStudentName() { // get 가져오는 것이기 때문에 불러오려면 get을 붙여줘야함, studentName은 string 이기 떄문에 String getStudentName 라고 작성
// studentName을 반환
return studentName;
}
public void setStudentName(String studentName) { // 저장하기 때문에 set을 붙이고 set은 보통 void를 씀
// studentName을 저장
this.studentName = studentName;
}
}
package chapter20230814.student;
public class test02 {
public static void main(String[] args) {
Student studentAhn = new Student(); // 객체생성
studentAhn.studentName = "안승연";
//같은 결과가 나옴
System.out.println(studentAhn.studentName); // 안승연, 1번 방법으로 접근
System.out.println(studentAhn.getStudentName()); // 안승연, 2번 방법으로 접근
}
}
package chapter20230814.student;
public class test03 {
public static void main(String[] args) {
/*
멤버 변수로 접근하는 방법은
1) 바로접근
2) 메서드를 통한 접근이 가능
일반적으로는 메서드를 통한 접근을 사용
*/
Student student1 = new Student();
student1.setStudentName("안연수");
System.out.println(student1.getStudentName());
Student student2 = new Student();
student2.setStudentName("홍길동");
System.out.println(student2.getStudentName());
}
}
package chapter20230814.student;
public class test04 {
public static void main(String[] args) {
// TODO Auto-generated method stub
/*
참조 변수 복사
*/
Student student1 = new Student();
student1.studentName = "안연수";
Student student2 = new Student();
student2.studentName = "안승연";
System.out.println(student1); // chapter20230814.student.Student@251a69d7 - @메모리주소
System.out.println(student2); // chapter20230814.student.Student@7344699f
System.out.println(student1.getStudentName()); // 안연수
System.out.println(student2.getStudentName()); // 안승연
System.out.println();
// 두 객체가 저장된 주소가 다르나, 물리적으로 다른 주소에 저장이 된걸 알 수 있음,
// 패키지명.클래스이름@메모리에 저장된 주소
student1 = student2;
System.out.println(student1); // chapter20230814.student.Student@7344699f
System.out.println(student2); // chapter20230814.student.Student@7344699f
System.out.println(student1.getStudentName()); // 안승연
System.out.println(student2.getStudentName()); // 안승연
// 객체는 참조타입이라서 주소가 복사됨
}
}