티스토리 뷰
Chapter 8. 추상 클래스와 인터페이스 내부 클래스
▶ 학습 목표
: 추상이 무엇인지 이해할 수 있다. 인터페이스가 무엇인지 알고 추상과의 차이를 알고 사용한다.
8-1. 추상 메서드와 추상 클래스
- 추상 메서드
: 선언만하고 구체적인 내용은 명시하지 않은 함수
자
여러 사람들과 같이 작업할 시 코드가 오류나지 않고 병합할 수 있도록 한다.
abstract 명령어를 메서드 앞에 붙여주어 사용한다.
abstract void methodA();
- 추상 클래스
: 추상 메서드를 멤버로 가지는 클래스
완전한 코드라기 보다는 기본적인 틀로써 사용된다.
abstract class Cellphone{
abstract void methodA();
// 일반 멤버들 생략
}
package Chapter7;
abstract class Pokemon{
String name;
abstract void attack();
abstract void sound();
public String getName() //set이 없으면 변경은 불가능함
{
return this.name;
}
}
class Pikachu extends Pokemon
{
Pikachu(){
this.name="피카츄";
}
@Override
void attack() {
//구체적으로 구현
System.out.println("전기공격");
}
@Override
void sound() {
System.out.println("피카 피카!");
}
}
class Squirtle extends Pokemon{
Squirtle(){
this.name="꼬부기";
}
@Override
void attack() {
System.out.println("물 공격");
}
@Override
void sound() {
System.out.println("꼬북 꼬북!");
}
}
public class Abstractclass1 {
public static void main(String[] args) {
Pikachu pikachu1 = new Pikachu();
System.out.println("이 포켓몬은 : " +pikachu1.getName());
pikachu1.attack();
pikachu1.sound();
Squirtle squirtke1 = new Squirtle();
System.out.println("이 포켓몬은 : " + squirtke1.getName());
squirtke1.attack();
squirtke1.sound();
}
}
이 포켓몬은 : 피카츄
전기 공격
피카 피카!
이 포켓몬은 : 꼬부기
물 공격
꼬북 꼬북!
8-2. 인터페이스
- 인터페이스
: 객체간의 상호작용을 위한 약속(규약)
물체 간 사이에서 상호작용을 위한 매개역할을 한다.
설계시 필요한 것들을 나열해놓은 양식으로 인터페이스를 바탕으로 클래스를 작성한다.
(인터페이스는 완전한 설계도 틀이 아니다)
- 인터페이스 문법
interface 인터페이스이름{
public static final 타입 이름 = 값;
public abstract 반환타입 메서드이름(매개변수);
}
상수 앞에는 public final static / 메서드 앞에는 public abstract 를 붙인다.
인터페이스는 상수와 추상 메서드를 멤버로 가질 수 있다.
implement를 사용하여 구현한다.
* 제어자를 생략해도 에러 발생하지 않음(자동으로 추가됨)
* 자식 클래스는 오버라이딩을 통해 내부의 추상 메서드를 구체적으로 구현해야한다.
* 부모의 접근제어자보다 더 넓거나 같은 범위의 제어자를 사용해야한다.(대부분 public 사용)
* 다중 상속이 가능하다.
class B extends C implements A{
/C 멤버
/A 멤버
}
interface A {
void methodA();
}
interface B{
void methodB();
}
interface C implement A,B{
}
→ 추상 메서드 methodA와 methodB 둘 다 멤버로 상속 받는다.
- 인터페이스의 실제 활용
package chapter8;
interface providable
{
void leisuresports();
void sightseeing();
void food(); //함수 세개
}
class koreatour implements providable
//인터페이스와 추상화 같은 양식만 있는것들은 오버라이딩해줘야함(안의 내용은 비었기때매)
//koreatour 클래스는 providable 클래스를 구현함(인터페이스에서 상속=구현)
{
@Override
public void leisuresports()
{
System.out.println("한강에서 수상스키 투어");
}
@Override
public void sightseeing()
{
System.out.println("경복궁 관람 투어");
}
@Override
public void food()
{
System.out.println("전주 비빔밥 투어");
}
}
class tourguide
{
private providable tour = new koreatour();
public void leisuresports()
{
tour.leisuresports();
}
public void sightseeing()
{
tour.sightseeing();
}
public void food()
{
tour.food();
}
}
public class interface3
{
public static void main(String[] args) {
tourguide guide = new tourguide();
guide.leisuresports();
guide.sightseeing();
guide.food();
}
}
한강에서 수상스키 투어
경복궁 관람 투어
전주 비빔밥 투어
'코딩 > JAVA' 카테고리의 다른 글
[3주차 2일] Chapter 9. 예외처리 (0) | 2023.10.24 |
---|---|
[3주차 2일] Chapter 8. 추상 클래스와 인터페이스 내부 클래스 (0) | 2023.10.24 |
[3주차 1일] Chapter 7 .상속과 다형성 (0) | 2023.10.23 |
[2주차 5일] Chapter 7 .상속과 다형성 (0) | 2023.10.20 |
[2주차 5일] 클래스, 객체, 인스턴스, static 차이 (0) | 2023.10.20 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday