본문 바로가기
개발일지

개발일지 14일차 -Override,Overloding-

by 태운콩즙 2023. 12. 14.
728x90
반응형

-Override-

 

Override는 '기각하다', '무시하다'의 뜻을 담고있다. 즉, '기존의 것을 무시하고 덮어쓰다.'의 의미를 가진다. 자바에서 메소드 오버라이딩이란, 상속의 관계에 있는 클래스 간에 하위 클래스가 상위 클래스와 '완전 동일한 메소드'를 덮어쓴다는 의미이다. 여기서 '완전 동일한 메소드'라는 말은 이름과 반환형이 같으면서 매개변수의 개수와 타입까지 모두 같은 메소드라는 의미이다. 즉, 오버로딩(overload)되지 않는 (JVM이 단순히 다른 메소드라고 구별을 할 수 없는) 메소드이다.

 

  • 메서드 재정의시 붙이는 어노테이션
  • 어노테이션은 ‘@’ 가 붙어있는 표현 자바 컴파일시 가장 먼저 체크를함
  • 메서드 재정의란 클래스 상속 관계에서 부모 클래스가 가진 메서드를 자식 클래스에서 코드 블록의 내용을 바꾸는것 메서드 정의 부분은 변경 불가
  • Overloding
  • 동일한 이름의 메서드 또는 생성자 를 여러 개 쓸 수 있는것
  • 예) 같은 이름의 생성자를 여러 개 쓰는것(기본생성자, 매개변수 있는 생성자등)
  • 단 매개변수의 종류 및 갯수는 달라야함

-toString-

객체가 가지고 있는 정보나 값들을 문자열로 만들어 리턴하는 메소드이다

 

String 클래스에서는 toString에 메소드를 재정의 하여 값을 리턴해준다

 

<예문>

 

package ch10_class.ex10;

/**
 * 회원 정보 클래스
 * 회원 정보
 *    - 이메일(memberEmail)
 *    - 비밀번호(memberPassword)
 *    - 이름(memberName)
 *    - 전화번호(memberMobile)
 *  getter/setter
 *  생성자 2가지
 *  로그인 처리 메서드
 *    name: memberLogin
 *    parameter: memberEmail, memberPassword
 *    return type: boolean
 *    실행내용: 이메일, 비밀번호가 일치하면 true,
 *              일치하지 않으면 false 리턴
 */
public class Member {
    private String memberEmail;
    private int memberPassword;
    private String memberName;
    private String memberMobile;

    public void setMemberEmail(String memberEmail) {
        this.memberEmail = memberEmail;
    }

    public void setMemberPassword(int memberPassword) {
        this.memberPassword = memberPassword;
    }

    public void setMemberName(String memberName) {
        this.memberName = memberName;
    }

    public void setMemberMobile(String memberMobile) {
        this.memberMobile = memberMobile;
    }

    public String getMemberEmail() {
        return memberEmail;
    }

    public int getMemberPassword() {
        return memberPassword;
    }

    public String getMemberName() {
        return memberName;
    }

    public String getMemberMobile() {
        return memberMobile;
    }

    public Member() {

    }

    public Member(String memberEmail, int memberPassword) {

    }

    public boolean memberLogin(String memberEmail, int memberPassword) {
        if (memberEmail.equals(getMemberEmail()) && memberPassword == getMemberPassword()) {
            System.out.println("로그인 되었습니다");
            return true;

        } else if (memberEmail != getMemberEmail() || memberPassword != getMemberPassword()) {
            System.out.println("틀렸습니다 다시 입력해주세요");

        }
        return false;
    }

    @Override
    public String toString() {
        return "Member{" +
                "memberEmail='" + memberEmail + '\'' +
                ", memberPassword=" + memberPassword +
                ", memberName='" + memberName + '\'' +
                ", memberMobile='" + memberMobile + '\'' +
                '}';
    }
}

 

package ch10_class.ex10;

import java.util.Scanner;

public class MemberMain {
    public static void main(String[] args) {
        /**
         * 메뉴
         * 1. 회원가입(기본생성자이용)
         *      회원가입 정보는 스캐너로 받음.
         * 2. 로그인
         * 3. 종료
         */

        Member member = new Member();
        Scanner scanner = new Scanner(System.in);
        boolean run = true;
        String email = member.getMemberEmail();
        int password = member.getMemberPassword();
        while (run){
            System.out.println("메뉴");
            System.out.println("1.회원가입 "+"2.로그인 " + "3.종료");
            int num1 = scanner.nextInt();
            if (num1 == 1){
                System.out.print("이메일: ");
               member.setMemberEmail(scanner.next());
                System.out.print("비밀번호: ");
                member.setMemberPassword(scanner.nextInt());
                System.out.print("이름: ");
                member.setMemberName(scanner.next());
                System.out.print("전화번호: ");
                member.setMemberMobile(scanner.next());

            }else if (num1 == 2){
                System.out.print("이메일: ");
                email = scanner.next();
                System.out.print("비밀번호: ");
                password = scanner.nextInt();
               boolean result = member.memberLogin(email , password);


            }
            else if (num1 == 3){
                run = false;
                System.out.print("종료합니다");
                break;
            }


        }

    }
}

 

 

728x90
반응형