자바 공부/자바

자바 추상클래스,인터페이스

ari0930 2024. 4. 14. 23:40

자바 추상클래스

추상클래스란?

-추상클래스는 메서드명만 존재하고 안의 내용은 자식 클래스에서 구현되는 클래스를 말한다.

-이러한 내용이 없는 메서드를 추상 메서드라 한다,

-추상클래스 안에는 추상 메서드와 일반 메서드 모두 다 사용할 수 있다 그러나 추상 메서드가 하나 이상 있어야 한다.

-추상 클래스는 자신의 인스턴스를 객체로 가질 수 없다. 이 말은 자신을 객체로 사용이 불가능하다 자식클래스에 상속 후 자식클래스를 인스턴스 하여 부모인 추상클래스 내용을 사용할 수 있다.

 

추상 클래스 선언

abstract class 클래스명    => 이렇게 선언할 수 있다.

 

추상 메서드 선언 

abstract 반환유형 메서드명();    => 이렇게 선언할 수 있다.

 

 

추상클래스 사용법

-추상클래스 

abstract class Animal {
    String name;

    public Animal(String name) {
        this.name = name;
    }

    // 추상 메서드
    abstract void makeSound();
}

-자식 클래스

// Animal 클래스를 상속받는 Dog 클래스
class Dog extends Animal {
    public Dog(String name) {
        super(name);
    }

    // 추상 메서드의 구현
    void makeSound() {
        System.out.println(name + "이(가) 멍멍 짖습니다.");
    }
}

 

public class Main {
    public static void main(String[] args) {
        Dog dog = new Dog("멍멍이");
        dog.makeSound();  // 출력: 멍멍이가 멍멍 짖습니다.
    }
}

 

 

자바 인터페이스

인터페이스란?

-추상 클래스와 마찬가지로 그 자체로 객체로 만들 수 없다.

-추상 메서드만 포함 가능하다.

-다중 상속을 구현할 수 있다,

-변수를 포함할 수는 있으나 포함하지 않는 게 좋다.

 

인터페이스 선언

interface 인터페이스명{

}

interface Animal {
    void makeSound(); // 추상 메서드
    void eat();       // 추상 메서드
}

 

인터페이스의 상속과 상용법 예시

부모 인터페이스

// 부모 인터페이스
interface Animal {
    void makeSound();
}

자식 인터페이스

// 자식 인터페이스
interface Pet extends Animal {
    void play();
}

pet을 상속할 클래스

// Pet 인터페이스를 구현하는 Dog 클래스
class Dog implements Pet {
    public void makeSound() {
        System.out.println("멍멍");
    }

    public void play() {
        System.out.println("공놀이를 합니다.");
    }
}

메인

public class Main {
    public static void main(String[] args) {
        Pet dog = new Dog();
        dog.makeSound();  // 출력: 멍멍
        dog.play();       // 출력: 공놀이를 합니다.
    }
}

 

 

인터페이스가 인터페이스에 상속할 때에는 extend를 이용하여 상속할 수 있다.

인터페이스가 클래스에 상속할 경우에는 implements를 이용하여 상속할 수 있다.

 

인터페이스 다중 상속

// 첫 번째 인터페이스
interface Walkable {
    void walk();
}

// 두 번째 인터페이스
interface Swimmable {
    void swim();
}

// 다중 상속을 받는 인터페이스
interface Amphibious extends Walkable, Swimmable {
    void amphibiousAction();
}

// 클래스가 다중 인터페이스를 상속 받을 경우
class Frog implements Walkable, Swimmable {
    public void walk() {
        System.out.println("개구리가 걷습니다.");
    }

    public void swim() {
        System.out.println("개구리가 수영합니다.");
    }


}

 

반응형

'자바 공부 > 자바' 카테고리의 다른 글

자바 - JDBC  (0) 2024.04.10
자바 접근제한자  (0) 2024.04.10
자바 클래스  (0) 2024.04.10
자바 메서드  (0) 2024.04.05
[자바] 변수 선언,데이터 타입,  (0) 2024.02.02