Java programming

(22.10.14)객체지ν–₯ 언어와 Override 와 Overload

ν”„λ‘œκ·Έλž˜λ¨Έ μ˜€μ›” 2022. 10. 14.

**ν‚€λ³΄λ“œμ—μ„œ νšŒμ›μ •λ³΄λ₯Ό μž…λ ₯ν•˜μ—¬ Member 객체λ₯Ό μ΄ˆκΈ°ν™”ν•˜κ³  배열에 μ €μž₯ν•œλ‹€. 배열에 총 3λͺ…μ˜ νšŒμ›μ •λ³΄λ₯Ό μ €μž₯ν•˜κ³  화면에 λͺ©λ‘μ„ ν‘œμ‹œν•œλ‹€. Member(num, name, phone, email)

 

Main Class λ©”μ†Œλ“œ

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
import java.util.Scanner;
import com.ezen.javaoop.Member;
 
public class Main 
{
    
    public static void main(String[] args) 
    {
        Member[] mem = new Member[3];
        Scanner kbd123 = new Scanner(System.in);
        for(int i =0;i<3;i++) {
            System.out.println("번호");
            int info1 = kbd123.nextInt();
            kbd123.nextLine();
            
            System.out.println("이름");
            String info2 = kbd123.nextLine().strip();
            
            System.out.println("μ „ν™”λ²ˆν˜Έ");
            String info3 = kbd123.nextLine().strip();
            
            System.out.println("이메일");
            String info4 = kbd123.nextLine().strip();
            
            
            Member m = new Member(info1,info2,info3,info4);
            mem[i] = m;
        }
        printMemlist(mem);
    }
    
    private static void printMemlist(Member[] n) {
        
        System.out.printf("%s\t%s\t%s\t%s \n","번호","이름","μ „ν™”λ²ˆν˜Έ","이메일");
        for(int i =0;i<n.length;i++) {
           n[i].printMember();
        }    
    }
}
 
cs

29ν–‰ printMemlist(mem); 둜 μ§€μ—­λ³€μˆ˜μΈ mem을 λΆ€λ₯΄κΈ° μœ„ν•΄ 메인 λ©”μ†Œλ“œμ— 호좜 ν•΄μ€€λ‹€.

32ν–‰ printMemlist(Member[] m) νŒŒλΌλ―Έν„°μ— 값을 λ„£μ–΄μ„œ  λ‹€λ₯Έ λ©”μ†Œλ“œμ—μ„œλ„ μœ„μ— 있던 μ§€μ—­λ³€μˆ˜λ₯Ό μ“Έ 수 있게 ν•œλ‹€. nμœΌλ‘œμ„œ  printMemlist에 mem값을 μ“Έ 수 있게 됐닀.

Member Class λ©”μ†Œλ“œ

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
public class Member 
{
    private int num;
    private String name;
    private String phone;
    private String email;
    
    public Member() {}
    public Member(int num, String name, String phone, String email ) 
    {
        this.setNum(num);
        this.setName(name);
        this.setPhone(phone);
        this.setEmail(email);
    }
    
    public int getNum() {
        return num;
    }
    public void setNum(int num) {
        this.num = num;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getPhone() {
        return phone;
    }
    public void setPhone(String phone) {
        this.phone = phone;
    }
    public String getEmail() {
        return email;
    }
    public void setEmail(String email) {
        this.email = email;
    }
    
    public void printMember() {
        System.out.printf("%d\t%s\t%s\t%s \n", num, name, phone, email);
    }
}
cs

μ½˜μ†” κ°’:

번호
1
이름
솑
μ „ν™”λ²ˆν˜Έ
010-1223-6554
이메일
safs@naver.com
번호
2
이름
λ°•
μ „ν™”λ²ˆν˜Έ
010-4161-8496
이메일
dafklsj@naver.com
번호
3
이름
유
μ „ν™”λ²ˆν˜Έ
010-6545-8789
이메일
sfnkifs@naver.com
번호 이름 μ „ν™”λ²ˆν˜Έ 이메일

1 솑 010-1223-6554 safs@naver.com 
2 λ°• 010-4161-8496 dafklsj@naver.com 
3 유 010-6545-8789 sfnkifs@naver.com 


Override 와 Overload

Override

λΆ€λͺ¨ν•œν…Œ 상속받은 λ©”μ†Œλ“œμ˜ κΈ°λŠ₯을 μˆ˜μ •ν•˜μ—¬ λ‹€μ‹œ μ •μ˜ν•˜μ—¬ μ‚¬μš©ν•˜λŠ” 것(λ©”μ†Œλ“œ μž¬μ •μ˜ Method Override)

μ—°μ‚°μžλŠ” μ˜€λ²„λΌμ΄λ“œ ν•  μˆ˜κ°€ μ—†λ‹€.

μ˜€λ²„λΌμ΄λ“œκ°€ ν•„μš”ν•  λ•Œ: λΆ€λͺ¨μ˜ λ©”μ†Œλ“œλ₯Ό μ‚¬μš©μžκ°€ μ •μ˜λ₯Ό λ°”κΏ” μ£Όκ³  μ‹Άμ„λ•Œ

μ½˜μ†” κ°’:

false
true

 

Member ν΄λž˜μŠ€μ— 동등 λΉ„κ΅μ‹œμ— λ²ˆν˜Έμ™€ 이름이 λ™μΌν•œ κ°μ²΄λŠ” λ™μΌν•œ κ²ƒμœΌλ‘œ νŒμ •ν•  수 μžˆλ„λ‘ μ˜€λ²„λΌμ΄λ“œλ₯Ό μ μš©ν•˜κΈ°

 

Member Class λ©”μ†Œλ“œ - equals κΈ°λŠ₯을 μ˜€λ²„λΌμ΄λ“œ ν•΄μ£ΌκΈ°

1
2
3
4
5
6
7
8
9
@Override
public boolean equals(Object obj) {//λΆ€λͺ¨μ˜ μ°Έμ‘° λ³€μˆ˜κ°€ μžμ‹μ˜ μ°Έμ‘° λ³€μˆ˜λ₯Ό λ‹€ μˆ˜μš© κ°€λŠ₯함
        Member other = (Member)obj;    
        if(this.num==other.num && this.name.equals(other.name)) {
            return true;
        }
        
        return false;
    }
cs

 

Main Class λ©”μ†Œλ“œ

1
2
3
        Member m1 = new Member(11"μ„œμ”¨""132156""ajfd@naver.com");
        Member m2 = new Member(11"μ„œμ”¨""132156""ajfd@naver.com");
        System.out.println(m1.equals(m2));
cs

μ½˜μ†” κ°’ : 

true


λ‹€ν˜•μ„± :  λ˜‘κ°™μ΄ λΆ€λͺ¨ν•œν…Œ λ°›μ•˜μ§€λ§Œ μž‘λ™ν•˜λŠ” κΈ°λŠ₯이 닀름 즉 .equals λ©”μ†Œλ“œλŠ” λΆ€λͺ¨ 클래슀인 μ˜€λΈŒμ νŠΈμ—μ„œ 상속 λ˜μ—ˆμ§€λ§Œ Stringν΄λž˜μŠ€μ™€ μ‚¬μš©μžκ°€ λ§Œλ“€μ–΄μ€€ Member ν΄λž˜μŠ€μ—μ„  λ‹€λ₯΄κ²Œ μ‚¬μš©λœλ‹€.

String ν΄λž˜μŠ€μ—μ„  .equalsλŠ” μ£Όμ†Œ 비ꡐ가 μ•„λ‹ˆλΌ μ•ˆμ— λ¬Έμžμ—΄λ§Œ λΉ„κ΅ν•˜λΌκ³  μ˜€λ²„λΌμ΄λ“œ λ˜μ–΄ μžˆλ‹€.

Overload

μƒμ„±μž μ˜€λ²„λ‘œλ“œ : λ™μΌν•œ μ΄λ¦„μ˜ μƒμ„±μžλ₯Ό νŒŒλΌλ―Έν„° 리슀트만 λ‹€λ₯΄λ©΄ μ—¬λŸ¬κ°œ λ§Œλ“€ 수 μžˆλ‹€. 

λ©”μ†Œλ“œ μ˜€λ²„λ‘œλ“œ : λ™μΌν•œ μ΄λ¦„μ˜ λ©”μ†Œλ“œλ₯Ό νŒŒλΌλ―Έν„° 리슀트만 λ‹€λ₯΄λ©΄ μ—¬λŸ¬κ°œ λ§Œλ“€ 수 μžˆλ‹€. 우린 λ©”μ†Œλ“œ 이름을 κ°™κ²Œ μ“°μ§€λ§Œ λ‚΄λΆ€μ—μ„œ λŒμ•„κ°ˆ 땐 νŒŒλΌλ―Έν„°λ₯Ό ν¬ν•¨ν•œ μ΄λ¦„μœΌλ‘œ κ°€κ³΅ν•΄μ„œ λŒμ•„κ°€κΈ°λ•Œλ¬Έμ΄λ‹€.

 

μƒμ„±μžμ™€ λ©”μ†Œλ“œμ˜ 차이

1. ν˜ΈμΆœν•  λ•Œ μƒμ„±μžλŠ” newλ₯Ό μ‚¬μš©ν•˜μ—¬ ν•œλ²ˆλ°–μ— ν˜ΈμΆœν•˜μ§€ λͺ»ν•˜μ§€λ§Œ, λ©”μ†Œλ“œλŠ” .(λ²”μœ„ μ—°μ‚°μž, μŠ€μ½”ν”„ μ—°μ‚°μž)λ₯Ό μ¨μ„œ 많이 호좜이 κ°€λŠ₯ν•˜λ‹€.

2. μƒμ„±μžλŠ” 이름이 클래슀 λͺ…κ³Ό λ™μΌν•΄μ•Όν•˜μ§€λ§Œ λ©”μ†Œλ“œλŠ” μ‚¬μš©μžκ°€ μ •μ˜ν•˜λŠ” 것 아무 κ±°λ‚˜ λœλ‹€.

3. μƒμ„±μžλŠ” 리턴 νƒ€μž…μ΄ μ—†μ§€λ§Œ λ©”μ†Œλ“œλŠ” λ¦¬ν„΄νƒ€μž… (void, int String λ“±λ“±)을 가지고 μžˆλ‹€.


λ©”μ†Œλ“œ μ˜€λ²„λ‘œλ“œ ν•΄μ„œ 

Mth.add(3, 5);
Mth.add("10", "20");

μœ„ 식을 νŒŒλΌλ―Έν„°λ§Œ λ°”κΏ” κ²°κ³Όλ₯Ό ν”„λ¦°νŠΈ ν•΄λ³΄μ‹œμ˜€

1
2
3
4
5
6
7
8
9
10
11
public class Mth 
{
    public static void add(int a, int b) {
        System.out.printf("%d+%d=%d\n",a,b,a+b);
    }
    public static void add(String a, String b) {
        System.out.printf("%d+%d=%d",
            Integer.valueOf(a),Integer.valueOf(b),Integer.valueOf(a)+Integer.valueOf(b) );
    }
}
 
cs

λ˜λŠ”

1
2
3
4
5
6
7
8
9
public class Mth 
{
    public static void add(int a, int b) {
        System.out.printf("%d+%d=%d\n",a,b,a+b);
    }
    public static void add(String a, String b) {
        add (Integer.valueOf(a),Integer.valueOf(b));
    }
}
cs

 

λ¬Έμžμ—΄μΈ " 숫자 " λ₯Ό 숫자 κ°’λ§Œ λΉΌλ‚΄λŠ” 방법은 Integer.valueOf λ˜λŠ”  Integer.parseIntλ₯Ό μ“°λ©΄λœλ‹€.

μ•„λž˜ κ²½μš°κ°€ λ°”λ‘œ μ˜€λ²„λ‘œλ”©μ΄λ‹€.

μ½˜μ†” κ°’:

3+5=8
10+20=30


Object obj = new Object();
obj = "Hello";

λΆ€λͺ¨μ˜ μ°Έμ‘° λ³€μˆ˜κ°€ μžμ‹μ˜ μ°Έμ‘° λ³€μˆ˜λ₯Ό λ‹€ 수용 κ°€λŠ₯ν•˜λ‹€.

obj λŠ” 졜고 쑰상 클래슀  /  "Hello"λŠ” String 클래슀

μžμ‹ κ°μ²΄κ°€ λΆ€λͺ¨μ˜ λ³€μˆ˜μ— ν• λ‹Ή λ˜λ©΄ κΈ°λŠ₯이 μΆ•μ†Œλœλ‹€.
μžμ‹μ˜ κΈ°λŠ₯이 λΆ€λͺ¨μ˜ κΈ°λŠ₯에 μƒμ†λ˜μ§„ μ•ŠλŠ”λ‹€.
ex) "Hello".lengh λŠ” λ˜μ§€λ§Œ obj.lengh λŠ” λΆˆκ°€ν•˜λ‹€.
κ·Έλž˜μ„œ ν˜• λ³€ν™˜μ„ ν•΄μ€˜μ•Όν•œλ‹€.

String s = (String)obj;
이러면 λ‹€μ‹œ .lengh κΈ°λŠ₯을 μ“Έ 수 있게 λœλ‹€.
s.lengh

 


 

 

λŒ“κΈ€