본문 바로가기
학교/2-2학기(Java)

[8주차] 10/23(수) 강의내용

by C0MPAS 2024. 10. 23.

5.7 추상 클래스

- 추상 메소드

- 추상 클래스

- 추상 클래스는 객체를 생성할 수 없다

- 추상 클래스의 상속

- 추상 클래스의 용도

// 예제 5-7: 추상 클래스의 구현 연습

abstract class Calculator{
	public abstract int add(int a, int b);
	public abstract int subtract(int a, int b);
	public abstract double average(int[] a);

	//추가
	public abstract int multiple(int a, int b);
	public abstract int divide(int a, int b);
}


public class NewCalc extends Calculator{
	@Override
	public int add(int a, int b) {
		return a+b;
	}
    
	@Override
	public int subtract(int a, int b) {
		return a-b;
	}

	@Override
	public double average(int[] a) {
		double sum = 0;
		for(int i=0; i<a.length; i++) {
			sum += a[i];
		}
		return sum/a.length;
	}

	// 추가
	@Override
	public int multiple(int a, int b) {
		return a*b;
	}

	@Override
	public int divide(int a, int b) {
		return a/b;
	}


	public static void main(String[] args) {
		NewCalc nc = new NewCalc();

		System.out.println(nc.multiple(20, 5));
		System.out.println(nc.divide(20, 5));
	}

}

5.8 인터페이스

- 자바의 인터페이스

- 인터페이스는 객체를 생성할 수 없다

- 인터페이스끼리 상속된다

- 인터페이스를 상속받아 클래스를 작성하면, 인터페이스의 모든 추상 메소드를 구현하여야 한다

// 예제 5-8: 인터페이스 구현

interface PhoneInterface{
	final int TIMEOUT = 10000;
	void sendCall();
	void receiveCall();
	default void printLogo() {
		System.out.println("** Phone **");
	}
}

class SamsungPhone implements PhoneInterface{
	@Override
	public void sendCall() {
		System.out.println("띠리리리링");
	}
    
	@Override
	public void receiveCall() {
		System.out.println("전화가 왔습니다.");
	}

	public void flash() {
		System.out.println("전화기에 불이 켜졌습니다.");
	}
}


public class InterfaceEx {
	public static void main(String[] args) {
		SamsungPhone phone = new SamsungPhone();
        
		phone.printLogo();
		phone.sendCall();
		phone.receiveCall();
		phone.flash();
	}

}

 

- 인터페이스 상속(다중상속이 가능하다)

- 인터페이스의 목적


- 인터페이스와 추상 클래스 비교

비교 목적 구성
추상 클래스      
인터페이스    

연습문제 16번

interface Device{
	void on();
	void off();
}


public class TV implements Device{
	@Override
	public void on() {
		System.out.println("켜졌습니다.");
	}

	@Override
	public void off() {
		System.out.println("종료합니다.");
	}

	public void watch() {
		System.out.println("방송중입니다.");
	}

	
	public static void main(String[] args) {
		TV myTV = new TV();
		
		myTV.on();
		myTV.watch();
		myTV.off();
	}

}

출처: 명품 JAVA Programming(개정 5판), 생능출판사

'학교 > 2-2학기(Java)' 카테고리의 다른 글

[9주차] 10/30(수) 강의내용  (1) 2024.10.30
[9주차] 10/28(월) 강의내용  (1) 2024.10.28
[8주차] 10/21(월) 강의내용  (0) 2024.10.21
[7주차] 10/16(수) 강의내용  (1) 2024.10.16
[7주차] 10/14(월) 강의내용  (0) 2024.10.14

댓글