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 |
댓글