[Java 객체지향] 클래스 생성하고 메서드 구현해보기

2022. 1. 24. 18:33·Java

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
'Java' 카테고리의 다른 글
  • [Java 객체지향] 생성자
  • [Java 객체지향] 인스턴스와 힙메모리
  • [Java 객체지향] 함수와 메소드
  • [Java 객체지향] 객체지향 프로그래밍
suaring
suaring
개발 공부 로그
  • suaring
    Sue's devlog
    suaring
  • 전체
    오늘
    어제
    • 분류 전체보기 (123)
      • Algorithm (2)
      • WEB (8)
      • Spring (26)
      • Java (83)
      • Kotlin (1)
      • Database (1)
      • Infra (0)
      • Git (1)
      • devlog (1)
  • 인기 글

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
suaring
[Java 객체지향] 클래스 생성하고 메서드 구현해보기
상단으로

티스토리툴바