관리 메뉴

gi_dor

Java (6) 객체지ν–₯ - λ©”μ„œλ“œ ν™œμš© , static , 상속 , 클래슀 ν˜•λ³€ν™˜ λ³Έλ¬Έ

Language/Java

Java (6) 객체지ν–₯ - λ©”μ„œλ“œ ν™œμš© , static , 상속 , 클래슀 ν˜•λ³€ν™˜

기돌 2023. 11. 8. 18:10


πŸ“š κ΅­λΉ„ 18 일차

 

 

 

πŸ”Έ λ©”μ„œλ“œ μ‚¬μš©ν•˜κΈ°

 

πŸ”Ή μ€ν–‰κ³„μ’Œ 클래슀 섀계

 

 μ†μ„±
  • 예금주 String 
  • κ³„μ’Œλ²ˆν˜Έ String  
  • λΉ„λ°€λ²ˆν˜Έ int
  • μž”μ•‘ long 
  • 이율 double
// λ©€λ²„λ³€μˆ˜ μ •μ˜ (iv)
		String owner;			// 예금주
		String accNo;			// κ³„μ’Œλ²ˆν˜Έ
		int password;			// λΉ„λ°€λ²ˆν˜Έ
		long balance;			// ν˜„μž¬ μž”μ•‘
		double interestRate;	// 이율
		
		
// μƒμ„±μž μ •μ˜ν•˜κΈ°
    public BankAccount(String owner , String accNo , int password , 
            long balance , double interestRate) {
        this.owner = owner;
        this.accNo = accNo;
        this.password = password;
        this.balance = balance;
        this.interestRate = interestRate;
}

 

κΈ°λŠ₯ 
  • κ³„μ’Œ 쑰회
  • μž…κΈˆ
  • 좜금
  • λΉ„λ°€λ²ˆν˜Έ λ³€κ²½
  • κ³„μ’Œ 해지
// --- 쑰회 
	//	예금주 , κ³„μ’Œλ²ˆν˜Έ , ν˜„μž¬ μž”μ•‘ 화면에 좜λ ₯
	// * λ°˜ν™˜ νƒ€μž… : void 
	// * λ©”μ„œλ“œ 이름 : display
	// * λ§€κ°œλ³€μˆ˜ : μ—†μŒ
	// public void display() {}
    
    // κ³„μ’Œμ •λ³΄ 화면에 좜λ ₯ν•˜κΈ°
		public void display() {
			System.out.println("### κ³„μ’Œμ •λ³΄ 확인");
			System.out.println("예금주 : " + owner);
			System.out.println("κ³„μ’Œλ²ˆν˜Έ : " + accNo);
			System.out.println("ν˜„μž¬ μž”μ•‘ : " + balance);
		}
	// --- μž…κΈˆ
	//	μ‹ κ·œ μž…κΈˆμ•‘μ„ 전달받아 μž”μ•‘μ„ 쀑가 μ‹œν‚¨λ‹€
	// * λ°˜ν™˜ νƒ€μž… : void 
	// * λ©”μ„œλ“œ 이름 : deposit
	// * λ§€κ°œλ³€μˆ˜ : int amount
	// public void deposit(int amount){}
    
    // μž…κΈˆν•˜κΈ°
		/**
		 * μž…κΈˆμ•‘μ„ 전달받아 , κ³„μ’Œμ˜ μž”μ•‘μ„ μž…κΈˆμ•‘ 만큼 μ¦κ°€μ‹œν‚¨λ‹€
		 * @param amount μž…κΈˆμ•‘
		 */
		
		public void deposit(int amount) {
			System.out.println("### μž…κΈˆμ•‘ : " + amount);
			balance += amount;
			
			System.out.println("### μž…κΈˆ ν›„ μž”μ•‘ : " + balance);
			System.out.println("### μž…κΈˆμ΄ μ™„λ£Œ λ˜μ—ˆμŠ΅λ‹ˆλ‹€.");
		}
	// --- 좜금
	//	μΆœκΈˆμ•‘ , λΉ„λ°€λ²ˆν˜Έλ₯Ό 전달받아 인증이 ν†΅κ³Όλ˜λ©΄
	//  μΆœκΈˆμ•‘ 만큼 μž”μ•‘μ„ κ°μ†Œ μ‹œν‚€κ³  μΆœκΈˆμ•‘ 만큼 κΈˆμ•‘μ„ λ°˜ν™˜ν•œλ‹€
	// * λ°˜ν™˜νƒ€μž… : int
	// * λ©”μ„œλ“œ 이름 : withdraw
	// * λ§€κ°œλ³€μˆ˜ : int amount , int pwd
	// public int withdraw (int amount , int pwd){}
    
    // μΆœκΈˆν•˜κΈ°
		/**
		 * 좜금 μš”κ΅¬ κΈˆμ•‘ , λΉ„λ°€λ²ˆν˜Έλ₯Ό 전달받아 , 인증이 μ™„λ£Œλ˜λ©΄ μš”κ΅¬λœ κΈˆμ•‘λ§ŒνΌ μΆœκΈˆμ•‘μ„ λ°˜ν™˜ν•œλ‹€.
		 * @param amount 좜금 κΈˆμ•‘
		 * @param pwd κ³„μ’Œ λΉ„λ°€λ²ˆν˜Έ
		 * @return μΆœκΈˆμ•‘μˆ˜ , λΉ„λ°€λ²ˆν˜Έκ°€ μΌμΉ˜ν•˜μ§€ μ•ŠμœΌλ©΄ μΆœκΈˆμ•‘μ€ 0 원이닀
		 */
		public int withdraw( int amount ,  int pwd) {
			// μš”κ΅¬ 쑰건인 μΆœκΈˆμ•‘μˆ˜μ™€ λΉ„λ°€λ²ˆν˜Έ μΌμΉ˜ν•œμ§€ 확인
			// λΉ λ₯΄κ²Œ μ’…λ£Œν•˜κΈ° , λ‚˜μœκ²½μš°λ₯Ό λ¨Όμ € μ°Ύμ•„μ„œ 제거
			if(password != pwd) {
				System.out.println("### 좜금이 μ‹€νŒ¨ ν–ˆμŠ΅λ‹ˆλ‹€");
				System.out.println("### λΉ„λ°€λ²ˆν˜Έκ°€ μΌμΉ˜ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€");
				return 0 ;
			}
		balance -= amount;
		System.out.println("### 좜금 성곡");
		System.out.println("### 좜금 ν›„ μž”μ•‘ "+balance);
		
		return amount;
		
		}
// --- λΉ„λ°€λ²ˆν˜Έ λ³€κ²½
	//	이전 λΉ„λ°€λ²ˆν˜Έ , μ‚¬μš©ν•  μƒˆ λΉ„λ°€λ²ˆν˜Έλ₯Ό μ „λ‹¬λ°›μ•„μ„œ 
	// 	인증이 ν†΅κ³Όλ˜λ©΄ λΉ„λ°€λ²ˆν˜Έλ₯Ό μƒˆ λΉ„λ°€λ²ˆν˜Έλ‘œ λŒ€μ²΄ν•œλ‹€
	// * λ°˜ν™˜ νƒ€μž… : void
	// * λ©”μ„œλ“œ 이름 : changePassword
	// * λ§€κ°œλ³€μˆ˜ : int oldPwd , int newPwd
	// public void changePassword(int oldPwd , int newPwd){}
    
// λΉ„λ°€λ²ˆν˜Έ λ³€κ²½ν•˜κΈ°
/**
 * 이전 λΉ„λ°€λ²ˆν˜Έμ™€ μƒˆ λΉ„λ°€λ²ˆν˜Έλ₯Ό 전달받아 λΉ„λ°€λ²ˆν˜Έλ₯Ό λ³€κ²½ν•œλ‹€
 * 이전 λΉ„λ°€λ²ˆν˜Έμ™€ λΉ„λ°€λ²ˆν˜Έκ°€ μΌμΉ˜ν•˜κ³  , μƒˆ λΉ„λ°€λ²ˆν˜Έμ™€ 이전 λΉ„λ°€λ²ˆν˜Έκ°€ 
 * μ„œλ‘œ λ‹€λ₯Έκ²½μš°μ—λ§Œ λΉ„λ°€λ²ˆν˜Έλ₯Ό λ³€κ²½ν•œλ‹€
 * @param oldPwd
 * @param newPwd
 */
public void changePassword(int oldPwd , int newPwd) {

    if(oldPwd != password) {
        System.out.println("### λΉ„λ°€λ²ˆν˜Έ λ³€κ²½ μ‹€νŒ¨");
        System.out.println(" λΉ„λ°€λ²ˆν˜Έκ°€ 일치 ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.");
        return; // λ°”λ‘œ μ’…λ£Œ ν•˜λ‹¨μ—  "### λΉ„λ°€λ²ˆν˜Έ 변경이 μ™„λ£Œ λ˜μ—ˆμŠ΅λ‹ˆλ‹€") 좜λ ₯μ•ˆλ˜κ²Œ ν•˜κ³  changePassword λ©”μ„œλ“œκ°€ μ’…λ£Œλ¨
    }

    if(oldPwd == newPwd) {
        System.out.println("### λΉ„λ°€λ²ˆν˜Έ λ³€κ²½ μ‹€νŒ¨");
        System.out.println(" κΈ°μ‘΄ λΉ„λ°€λ²ˆν˜Έμ™€ μƒˆ λΉ„λ°€λ²ˆν˜Έκ°€ 일치 ν•©λ‹ˆλ‹€.");
        return;	// changePassword λ©”μ„œλ“œκ°€ μ’…λ£Œ
    }

    password = newPwd;
    System.out.println("### λΉ„λ°€λ²ˆν˜Έ 변경이 μ™„λ£Œ λ˜μ—ˆμŠ΅λ‹ˆλ‹€");

}
// --- 해지 κΈ°λŠ₯
	//	λΉ„λ°€λ²ˆν˜Έλ₯Ό 전달받아 인증이 ν†΅κ³Όλ˜λ©΄ 
	// 	ν˜„μž¬ μž”μ•‘κ³Ό μ΄μœ¨μ„ 계산해 μ΅œμ’… 해지 μ˜ˆμƒκΈˆμ•‘μ„ λ°˜ν™˜ν•œλ‹€.
	// * λ°˜ν™˜ νƒ€μž… : long
	// * λ©”μ„œλ“œ 이름 : terminate
	// * λ§€κ°œλ³€μˆ˜ : int pwd
	// public long terminate (int pwd){}
    
    // 해지 κΈ°λŠ₯
    /**
     * λΉ„λ°€λ²ˆν˜Έλ₯Ό 전달받아 κ³„μ’Œλ₯Ό 해지 μ‹œν‚¨λ‹€ 
     * 해지가 μ™„λ£Œλ˜λ©΄ 해지 ν™˜κΈ‰κΈˆμ„ λ°˜ν™˜ν•œλ‹€
     * @param pwd 
     * @return 해지 ν™˜κΈ‰κΈˆμ•‘ , ν˜„μž¬ μž”μ•‘
     */
    public long terminate (int pwd) {
        System.out.println("### κ³„μ’Œ ν•΄μ§€ν•˜κΈ°");

        // μž”μ•‘ amount
        // 이자율 계산 amount * 0.05
        // 해지 ν™˜κΈ‰ μ΅œμ’…κΈˆμ•‘ = μž”μ•‘ + μ΄μžμœ¨κ³„μ‚° κΈˆμ•‘

        if(pwd != password) {
            System.out.println("### λΉ„λ°€λ²ˆν˜Έκ°€ μΌμΉ˜ν•˜μ§€ μ•Šμ•„ ν•΄μ§€ν• μˆ˜ μ—†μŠ΅λ‹ˆλ‹€.");
            return 0;
        }

        long amount = balance + (long)(balance * interestRate);	// Type mismatch: cannot convert from double to long
        System.out.println("κ³„μ’Œκ°€ μ„±κ³΅μ μœΌλ‘œ 해지 λ˜μ—ˆμŠ΅λ‹ˆλ‹€.");
        return amount;


    }

 

πŸ”Ή λ©”μ„œλ“œ μ‚¬μš©

package method;

public class BankAccountApp {

	public static void main(String[] args) {
		// TODO Auto-generated method stub

		// κ³„μ’Œμ •λ³΄ 객체λ₯Ό μƒμ„±ν•˜κ³  , 쑰회 , μž…κΈˆ , 좜금 , λΉ„λ°€λ²ˆν˜Έ λ³€κ²… , 해지기λŠ₯ μ‚¬μš©ν•˜κΈ°
		
		// κ³„μ’Œμ •λ³΄ 객체 생성
		BankAccount acc1 = new BankAccount("κΈ°μ„ " , "110 - 382 - 388888" , 1111 , 10000000 , 0.05);
		
		// κ³„μ’Œ μ‘°νšŒν•˜κΈ°
		acc1.display();
		System.out.println();
		
		// μž…κΈˆν•˜κΈ°
		acc1.deposit(50000);
		System.out.println();
		acc1.deposit(10000);
		System.out.println();
		acc1.deposit(100000);
		System.out.println();
		
		// μΆœκΈˆν•˜κΈ°
		long amount1 = acc1.withdraw(100000, 1234);
		System.out.println("μΆœκΈˆμ•‘  " + amount1);
		System.out.println();
		
		long amount2 = acc1.withdraw(160000, 1111);
		System.out.println("μΆœκΈˆμ•‘ " + amount2);
		System.out.println();
		
		
		// λΉ„λ°€λ²ˆν˜Έ λ³€κ²½ν•˜κΈ°
		acc1.changePassword(1111, 1111);
		System.out.println();
		acc1.changePassword(1234, 3321);
		System.out.println();
		acc1.changePassword(1111,1234);
		System.out.println();
		
		// κ³„μ’Œ ν•΄μ§€ν•˜κΈ°
		acc1.terminate(1112);
		System.out.println();

		long amount = acc1.terminate(1234);
		System.out.println("해지 κΈˆμ•‘ : " + amount );
		
		
	}

}

 


 

 

πŸ”Έ  static

 

  • static(정적)은 κ³ μ •λœ κ²ƒμ΄λž€ μ˜λ―Έλ₯Ό κ°€μ§€κ³  μžˆλ‹€.
  • static ν‚€μ›Œλ“œλ₯Ό μ‚¬μš©ν•΄μ„œ static λ³€μˆ˜μ™€ static λ©”μ„œλ“œλ₯Ό λ§Œλ“€ μˆ˜ μžˆλ‹€.
  • staticλ³€μˆ˜μ™€ staticλ©”μ„œλ“œλŠ” μ •μ ν•„λ“œμ™€ μ •μ λ©”μ„œλ“œλΌκ³  λΆ€λ₯Έλ‹€.(ν΄λž˜μŠ€λ³€μˆ˜, ν΄λž˜μŠ€λ©”μ„œλ“œλΌκ³ λ„ λΆ€λ₯Έλ‹€)
  • μ •μ λ³€μˆ˜μ™€ μ •μ λ©”μ„œλ“œλŠ” 객체(μΈμŠ€ν„΄μŠ€)에 μ†Œμ†λœ 멀버가 μ•„λ‹ˆλΌ ν΄λž˜μŠ€μ— κ³ μ •λœ 멀버닀


    클래슀 λ‘œλ”κ°€ ν΄λž˜μŠ€λ₯Ό λ‘œλ”©ν•΄μ„œ λ©”λͺ¨λ¦¬ μ˜μ—­μ— μ μž¬ν•  λ•Œ ν΄λž˜μŠ€λ³„λ‘œ κ΄€λ¦¬ν•˜λŠ”데, ν΄λž˜μŠ€μ˜ λ‘œλ”©μ΄ λλ‚˜λŠ” μ¦‰μ‹œ μ •μ λ³€μˆ˜μ™€ μ •μ λ©”μ†Œλ“œλŠ” μ‚¬μš©ν•  μˆ˜ μžˆκ²Œ λœλ‹€.

 

ꡬ뢄 클래슀 멀버 μΈμŠ€ν„΄μŠ€ 멀버
λ©”λͺ¨λ¦¬ μ˜μ—­ static μ˜μ—­ heap μ˜μ—­
μ‚¬μš© μ‹œμ  클래슀 λ‘œλ“œ μ¦‰μ‹œ 객체 생성 이후
곡유 μ—¬λΆ€ λͺ¨λ“  객체에 곡유 λœλ‹€ κ³΅μœ λ˜μ§€ μ•ŠμŒ
생성 갯수 ν•œ 번만 생성 new μ—°μ‚°μžλ‘œ μ—¬λŸ¬κ°œ 생성할 수 μžˆλ‹€
μ†Œλ©Έ μ‹œμ  ν”„λ‘œκ·Έλž¨ μ’…λ£Œμ‹œ μ°Έμ‘°λ³€μˆ˜κ°€ μ°Έμ‘° ν•˜μ§€ μ•Šμ„ λ•Œ

 

πŸ“Œ ν•„λ“œλ‚˜ λ©”μ„œλ“œλ₯Ό μΈμŠ€ν„΄μŠ€λ‘œ 생성할 것인지 , μ •μ μœΌλ‘œ 생성할 것인지에 λŒ€ν•œ νŒλ‹¨ 기쀀은

     κ³΅μš©μœΌλ‘œ μ‚¬μš©ν•˜λŠ” 경우 μ •μ λ©€λ²„λ‘œ μ„ μ–Έν•˜κ³ , 그렇지 μ•Šμ€ 경우 μΈμŠ€ν„΄μŠ€λ‘œ μ„ μ–Έν•œλ‹€.

 

 


	// λ©€λ²„λ³€μˆ˜
	// μ›μ˜ λ°˜μ§€λ¦„μ€ Circleκ°μ²΄λ§ˆλ‹€ μ„œλ‘œ λ‹€λ₯Έ 값을 가지기 λ•Œλ¬Έμ— λ©€λ²„λ³€μˆ˜λ‘œ μ •μ˜ν•œλ‹€.
	double r;
	
	
	// μ •μ λ³€μˆ˜ - 클래슀 λ³€μˆ˜  cv
	// μ›μ£Όμœ¨μ€ Cicle 의 μ’…λ₯˜μ— 상관없이 항상 3.14  (μƒμˆ˜ κ°’)
	static final double PI = 3.14;
	// λ³€ν•˜μ§€ μ•ŠλŠ” κ°’ static으둜 μ •μ˜
	
	
	public Circle2(double r) {
		this.r = r;
		// PIλŠ” 이미 κ³ μ •λœ κ°’μ΄λ‹ˆκΉ
		// 객체에 μ—†κ³  ν΄λž˜μŠ€μ— μ†ν•΄μžˆμŒ.
	}
	
	
	public double around() {
		return 2 * PI * r;
	}
	
	public double area() {
		return PI * r * r;
	}
		
		// λ°˜μ§€λ¦„λ§Œ μ „ν•΄μ£Όκ³  있음.
		Circle2 c1 = new Circle2(2);
		Circle2 c2 = new Circle2(3);
		Circle2 c3 = new Circle2(5);
		Circle2 c4 = new Circle2(6);
		Circle2 c5 = new Circle2(8);
		
		//
		System.out.println("μ›μ˜ λ‘˜λ ˆ : "+ c1.around());
		System.out.println("μ›μ˜ λ‘˜λ ˆ : "+ c2.around());
		System.out.println("μ›μ˜ λ‘˜λ ˆ : "+ c3.around());
		System.out.println("μ›μ˜ λ‘˜λ ˆ : "+ c4.around());
		System.out.println("μ›μ˜ λ‘˜λ ˆ : "+ c5.around());

 


package static1;

public class StaticSample {

	
	int x; // λ©€λ²„λ³€μˆ˜ - κ°œλ³„μ˜΅μ…˜
	static int y;  // μ •μ λ³€μˆ˜ - μƒμˆ˜ - κ³΅ν†΅μ˜΅μ…˜
	
	public void m1() {
		// 멀버 λ©”μ„œλ“œμ—μ„œλŠ” λ©€λ²„λ³€μˆ˜ , μ •μ λ³€μˆ˜λ₯Ό μ‚¬μš©ν•  수 μžˆλ‹€.
		x = 10;
		StaticSample.y = 20;
	}
	
	public void m2() {
		// λ©€λ²„λ©”μ„œλ“œμ—μ„œλŠ” λ©€λ²„λ² μ„œλ“œ , μ •μ λ©”μ„œλ“œ μ‚¬μš©ν•  수 μžˆλ‹€
		m1();
		StaticSample.m3();
	}
	
	public static void m3() {
	
		// 정적 λ©”μ„œλ“œμ—μ„œ λ©€λ²„λ³€μˆ˜λ₯Ό μ‚¬μš© ν•  수 μ—†λ‹€
//		x = 10;
		// 정적 λ©”μ„œλ“œμ—μ„œλŠ” μ •μ λ³€μˆ˜λ₯Ό μ‚¬μš© ν•  수 μžˆλ‹€
		StaticSample.y = 20;
	}
	
	public static void m4() {
		// 정적 λ©”μ„œλ“œμ—μ„œλŠ” λ©€λ²„λ©”μ„œλ“œλ₯Ό μ‚¬μš©ν•  수 μ—†λ‹€.
//		m1(); 였λ₯˜
		// 정적 λ©”μ„œλ“œμ—μ„œλŠ” μ •μ λ©”μ„œλ“œλ₯Ό μ‚¬μš©ν•  수 μžˆλ‹€.
		StaticSample.m3();
	}
	
	
	
}

πŸ”Έ 상속

  • 기쑴의 클래슀λ₯Ό(λΆ€λͺ¨) μž¬μ‚¬μš©ν•΄μ„œ μƒˆλ‘œμš΄ 클래슀λ₯Ό(μžμ‹) μž‘μ„±
  • μ μ€μ–‘μ˜ μ½”λ“œλ‘œ μƒˆλ‘œμš΄ 클래슀λ₯Ό μž‘μ„±ν• μˆ˜ μžˆλ‹€
  • ν‚€μ›Œλ“œ extends
  • μƒˆλ‘œ μž‘μ„±ν•œ ν΄λž˜μŠ€λ“€μ€ κΈ°μ‘΄ 클래슀의 μ½”λ“œλ₯Ό κ³΅ν†΅μœΌλ‘œ κ°€μ Έμ„œ 관리가 μ‰¬μ›Œμ§„λ‹€.
  • μ½”λ“œμ˜ μž¬μ‚¬μš©μ„±
  • μ½”λ“œμ˜ μ€‘λ³΅μ œκ±°
  • ν”„λ‘œκ·Έλž¨μ˜ 생산성과 μœ μ§€λ³΄μˆ˜μ„±μ΄ 쒋아진닀.
/**
 * μ „ν™”κΈ°λ₯Ό ν‘œν˜„ν•˜λŠ” 클래슀
 * 속성 : μ „ν™”λ²ˆν˜Έ
 * κΈ°λŠ₯ :  μ „ν™”κ±ΈκΈ° , μ „ν™”λ°›κΈ° 
 * 
 */
public class Phone {

	String number;
	
	public void call() {
		System.out.println("μ „ν™” κ±ΈκΈ°");
	}
	
	public void receive() {
		System.out.println("μ „ν™” λ°›κΈ°");
	}
}
public class SmartPhone extends Phone {
	
	String ip;
	
	public void internet() {
		System.out.println("인터넷을 μ΄μš©ν•©λ‹ˆλ‹€");
	}
	
	public void game() {
		System.out.println("κ²Œμž„μ„ ν•©λ‹ˆλ‹€");
	}
	
}
public class PhoneApp {
	
	public static void main(String[] args) {
		
		// Phone 객체 생성
		Phone p1 = new Phone();
		p1.number = "010 - 1234 -4568";
		p1.call();
		p1.receive();
		
		// SmartPhone 객체 생성
		SmartPhone p2 = new SmartPhone();
		p2.number = "010 - 9874 - 6532";
		p2.call();
		p2.receive();
		p2.ip = "192.168.10.111";
		p2.game();
		p2.internet();
		

	}
}

πŸ”Ή 클래슀의 상속

 

  • λ‹¨μΌμƒμ†λ§Œ μ§€μ›ν•œλ‹€
    ν•˜μœ„ ν΄λž˜μŠ€λŠ” ν•œκ°œμ˜ μƒμœ„ν΄λž˜μŠ€λ§Œ 상속 λ°›μ„μˆ˜ μžˆλ‹€
    λ‘κ°œ μ΄μƒμ˜ μƒμœ„ 클래슀λ₯Ό λ™μ‹œμ— 상속 λ°›μ„μˆ˜ μ—†λ‹€
    public class SmartPhone extends Phone, Camera P
    // 컴파일 였λ₯˜
    }​
  • λ™μ‹œμ— μƒμœ„ 클래슀λ₯Ό λ‘κ°œ 상속받을 수 μ—†μ§€λ§Œ μ—¬λŸ¬ μƒμœ„ 클래슀λ₯Ό 수직적으둜 상속받을 수 μžˆλ‹€.

public class Printer {
	blackPrint(){}
    }
    
public class ColoPrinter extends Printer{
        int color;
        printColor(){}
    }
 
public class LaserPrinter extends ColorPrinter{
	int dpi;
	printLaser(){}
}

 

πŸ”Ή Object 클래슀

  • μƒμœ„ ν΄λž˜μŠ€κ°€ μ§€μ •λ˜μ§€ μ•Šμ€ ν΄λž˜μŠ€λŠ” Object 클래슀λ₯Ό μƒμ†λ°›λŠ”λ‹€
  • Object ν΄λž˜μŠ€λŠ” μžλ°”μ˜ μ΅œμƒμœ„ ν΄λž˜μŠ€λ‹€
  • 배열을 ν¬ν•¨ν•œ λͺ¨λ“  클래슀의 μ΅œμƒμœ„ 클래슀
  • Javaμ—μ„œ λͺ¨λ“  ν΄λž˜μŠ€λŠ” Object 클래슀의 ν•˜μœ„ ν΄λž˜μŠ€λ‹€
  • Object ν΄λž˜μŠ€λŠ” μƒμœ„ ν΄λž˜μŠ€κ°€ μ—†λ‹€
  • 배열객체λ₯Ό 포함 λͺ¨λ“  κ°μ²΄λŠ” Objectκ°€ 가진 κΈ°λŠ₯을 μ‚¬μš©ν•  수 μžˆλ‹€

 

πŸ”Έ 클래슀 ν˜•λ³€ν™˜

 

πŸ”Ή 클래슀 ν˜•λ³€ν™˜

  • μ„œλ‘œ 상속 관계에 μžˆλŠ” 객체 μ‚¬μ΄μ—μ„œλ§Œ ν˜•λ³€ν™˜μ΄ κ°€λŠ₯ν•˜λ‹€
  • μƒμ„±ν•œ 객체와 μ°Έμ‘°λ³€μˆ˜ νƒ€μž…μ΄ λ‹€λ₯Ό λ•Œ 클래슀 ν˜•λ³€ν™˜μ΄ 이루어 진닀.
  • ν˜•λ³€ν™˜ ν•  λ•Œ λ°”λ‘œ μœ„ μƒμœ„ νƒ€μž…μ΄λ‚˜ λ°”λ‘œ μ•„λž˜ νƒ€μž…μ΄ μ•„λ‹ˆμ–΄λ„ 상관없닀
  • μžμ‹κ°μ²΄λ₯Ό λΆ€λͺ¨νƒ€μž…μ˜ μ°Έμ‘°λ³€μˆ˜μ— λŒ€μž…
            // Iphone κ°μ²΄λŠ” Iphone νƒ€μž…μ΄λ‹€
            Iphone p1 = new Iphone();
            p1.applemusic(); 		// Iphone 객체
            p1.appleplay();			// Iphone 객체
            p1.internet();			// SmartPhone 객체
            p1.game();				// SmartPhone 객체
            p1.ip = "192.168.10.1";		// SmartPhone 객체
            p1.call(); 				// Phone 객체
            p1.receive();			// Phone 객체

            // Iphone κ°μ²΄λŠ” SmartPhone νƒ€μž…μ΄λ‹€
            SmartPhone p2 = new Iphone();
//  	    p2.applemusic(); 		// Iphone 객체
//  	    p2.appleplay();			// Iphone 객체
            p2.internet();			// SmartPhone 객체
            p2.game();				// SmartPhone 객체
            p2.ip = "192.168.10.1"; 	// SmartPhone 객체
            p2.call(); 				// Phone 객체
            p2.receive();			// Phone 객체


            // Iphone κ°μ²΄λŠ” Phone νƒ€μž…μ΄λ‹€
            Phone p3 = new Iphone();
//          p3.applemusic(); 		// Iphone 객체
//          p3.appleplay();			// Iphone 객체
//          p3.internet();			// SmartPhone 객체
//          p3.game();				// SmartPhone 객체
//          p3.ip = "192.168.10.1"; // SmartPhone 객체
            p3.call(); 				// Phone 객체
            p3.receive();			// Phone 객체

 

  • Phone p; β—€ Phone 객체 , SmartPhone 객체 , Iphone 객체 , Android 객체 μ°Έμ‘°
  • SmartPhone p β—€ SmartPhone 객체 , Iphone 객체 , Android 객체 μ°Έμ‘°
  • Object β—€ 배열객체λ₯Ό ν¬ν•¨ν•œ λͺ¨λ“  객체
728x90