Student 클래스 생성
package ch03;
public class Student {
public int studentId;
public String studentName;
public String address;
public void showStudentInfo() { // 학생 인스턴스의 정보를 출력하는 메서드
System.out.println(studentId + " 학번 학생의 이름은 " + studentName + "이고, 주소는 " + address + "입니다.");
}
public String setStudentName(String name) { // 이름을 매개변수로 입력받아 학생의 이름으로 설정하는 클래스
return studentName = name;
}
}
Main 함수에서 실행
- 하나의 클래스를 이용하여 여러 개의 객체를 만들 수 있다. 이때 만들어지는 객체들을 인스턴스라고 한다.
package ch03;
public class StudentTest {
public static void main(String[] args) {
Student studentLee = new Student(); // Student 인스턴스 생성
studentLee.studentId = 12345;
studentLee.getStudentName("Lee");
studentLee.address = "서울시 강남구";
studentLee.showStudentInfo();
Student studentKim = new Student(); // Student 인스턴스 생성
studentKim.studentId = 56789;
studentKim.studentName = "Kim";
studentKim.address = "서울시 서초구";
studentKim.showStudentInfo();
}
}
출력 결과
12345 학번 학생의 이름은 Lee이고, 주소는 서울시 강남구입니다.
56789 학번 학생의 이름은 Kim이고, 주소는 서울시 서초구입니다.
응용
저번 시간에 만든 Order, Student, UserInfo 세 클래스 중 UserInfo 클래스를 활용하여 배운 것을 응용해보고자 한다.
구현하고 싶은 것은 user 인스턴스를 생성하여 아이디와 비밀번호를 설정하고, 아이디와 비밀번호를 입력받아 설정한 정보와 일치하면 성공 메세지를 띄우는 기능이다.
UserInfo 클래스에 메서드 추가하기
- 아이디와 비밀번호를 매개변수로 입력받아 인스턴스의 값으로 설정하기 위한 메서드를 만들었다.
package ch01;
public class UserInfo {
String userId;
String userPassword;
String userName;
String userAddress;
int phoneNumber;
public String setUserId(String id) {
return userId = id;
}
public String setUserPassword(String password) {
return userPassword = password;
}
}
Test 클래스 생성하여 기능 구현해보기
package ch01;
import java.util.*;
public class Test {
public static void main(String[] args) {
UserInfo user = new UserInfo();
user.setUserId("abc");
user.setUserPassword("***");
Scanner scanner = new Scanner(System.in);
String inputId = scanner.next();
String inputPassword = scanner.next();
if (inputId == user.userId && inputPassword == user.userPassword) {
System.out.println("로그인에 성공했습니다.");
}
else {
System.out.println("로그인에 실패했습니다.");
}
}
}
수행 결과
abc
***
로그인에 실패했습니다.
잘 짠 것 같은데 계속 로그인 실패 메세지만 뜬다ㅜ.ㅜ
next() 메서드를 잘못 쓴건가 해서 콘솔에 찍어보니 설정한 값은 제대로 나왔다.
문제는 문자열을 비교하는 방법이였다.
찾아보니 자바에서 '==' 기호는 문자열을 비교하지는 않고 객체가 같은지만 비교한다고 한다.
문자열 비교는 Object 클래스의 equals() 메서드 또는 compareTo() 메서드를 사용한다.
조건문 수정 및 결과
if (inputId.equals(user.userId) && inputPassword.equals(user.userPassword)) {
System.out.println("로그인에 성공했습니다.");
}
else {
System.out.println("로그인에 실패했습니다.");
}
abc
***
로그인에 성공했습니다.
수정해주니 원하던 대로 수행되었다!!
'Java' 카테고리의 다른 글
| [Java 객체지향] 인스턴스와 힙메모리 (0) | 2022.01.24 |
|---|---|
| [Java 객체지향] 함수와 메소드 (0) | 2022.01.24 |
| [Java 객체지향] 객체지향 프로그래밍 (0) | 2022.01.23 |