본문 바로가기

컴퓨터공부/Java

[java공부] 인터페이스와 추상메서드의 개념

by Life & study 2023. 11. 7.
반응형

 

[java공부] 인터페이스와 추상메서드의 개념

 

# 추상메서드 관점이다

 

구현이 없는 설계도

 

 

메서드의 접근은 메서드명. getHour()

 

인터페이스는 추상메서드의 집합이다.

 

-추상클래스와 인터페이스의 차이가 뭐냐?

 

-틀

interface 인터페이스이름 {

 

상수와

추상메서드

}

 

코드

public interface MyInterface {
    // 상수
    int MY_CONSTANT = 10;

    // 추상 메서드
    void myMethod();
}
이 인터페이스를 구현한 클래스는 다음과 같습니다.

java
public class MyClass implements MyInterface {
    @Override
    public void myMethod() {
        System.out.println("MyClass에서 myMethod를 구현합니다.");
    }
}
Spring과 Spring Boot에서도 이와 같은 방법으로 인터페이스를 사용할 수 있습니다. 특히, Spring에서는 인터페이스를 사용하여 의존성 주입(Dependency Injection)을 구현합니다.

예를 들어, 아래는 서비스 계층의 인터페이스를 정의하고, 해당 인터페이스를 구현한 클래스를 생성하는 예입니다.

java
public interface MyService {
    void performTask();
}

@Service
public class MyServiceImpl implements MyService {
    @Override
    public void performTask() {
        // Task 수행
    }
}

 

 

 

 

인터페이스는 안써도 abstract이다 .

 

## 인터페이스의 조상은 인터페이스만 가능하다 (Object가 최고조상이아님)

 

1.인터페이스조상은 인터페이스만 가능하다.

2.

 

-상속을 받는조건 

충돌될 일이없다

메소드 명만 있다.

 

-공통점 추상메서드와 인터페이스의 공통점

미완성 설계도

 

### 인터페이스의 구현

 

인터페이스의 상속은 extend를 쓰지않고 implements를 쓴다. 

implements는 구현을 말한다.

 

구현의 조건으로는,

 

abstract 를 사용하고 implements로 상속받는다.

 

-코드작성요령

 

추상클래스 구현

extends 는 void 메소드명(파라미터)로

 

코드

public class ParentClass {
    public void parentMethod() {
        System.out.println("This is a method in ParentClass.");
    }
}

public class ChildClass extends ParentClass {
    public void childMethod() {
        System.out.println("This is a method in ChildClass.");
    }
}

 

인터페이스 구현

implements는 public void 메소드명 (파라미터)로   , 

 

코드

public interface MyInterface {
    void myMethod();
}

public class MyClass implements MyInterface {
    @Override
    public void myMethod() {
        System.out.println("This is an implementation of myMethod in MyClass.");
    }
}

 

 

 

 

정리, 

extends: 클래스를 상속받을 때 사용합니다. 상속을 통해 부모 클래스의 속성과 메서드를 자식 클래스에서 사용할 수 있습니다.


implements: 인터페이스를 구현할 때 사용합니다. 인터페이스는 메서드의 시그니처만 정의하며, 이를 구현하는 클래스에서는 인터페이스의 모든 메서드를 구현해야 합니다. 

 

-공통점

미완성 설계도

추상메서드이다.

 

-차이점

 

iv를 가질수있느냐 없느냐이다.

멤버변수를 가질수 있으냐 없느냐이다.

 

abstract는 iv를 가질수있다.

 

interface는 iv를 가질수없다.

생성자,인스턴스메서드도 안된다.

 

추상메서드만 된다.

-종류

(static , 상수, 디폴트 메서드)

 public, abstract 키워드를 사용하여 선언되며, 구현 부분이 없고 메서드 시그니처
디폴트 메서드 (Default Methods)
정적 메서드 (Static Methods)
private 메서드 (Private Methods) Java 9부터 인터페이스는 private 메서드를 가질 수 있습니다.)

 

구현이없다 껍데기만 있다.

 

-종류 정리,

class figter는 new figter의 객체의공간이고,

 

extends Unit 타입이고

implements Figtable 타입이다.

 

interface Fightable{

 void move(int x, int y);

 void attack(Fightable f);

}

면 2개만 사용가능하다.

 

f.move(100,.200);

f.attack(new Figter()); 으로 2개만 사용가능하다.

 

#### 인터페이스를 이용한 다형성

 

다중상속은 충돌의 문제를 가지고있다.

 

-코드" 인터페이스는 인터페이스 조상이면 인터페이스 부모는 자동 타입변환이 가능핟.

Fightable method(} {

 

Fighter f = new Fighter();

return f;

}  fightable이 조상이라서 Fighter f 인터페이스로 객체 반환 구현이 가능하다는  

 

-코드 사용법 (최종장)

 

public interface Fightable {   //호출전문
    void fight();
}

public class Fighter implements Fightable {  //구현전문
    public void fight() {
        System.out.println("Fighter is fighting");
    }
}

public class Game {
    public Fightable createFighter() {   //Fightable 타입을 쓴 createFighter() 메소드를
        return new Fighter();   //new Fighter담았다?
    }
}

그렇다면, new Fighter는 "Fighter is fighting"를 출력한다

 

-인터페이스의 규칙

 

1.조상보다 자식이 타입의 범위가 좁으면 안된다. 

조상이 public을 사용하면 자식은 public을 사용해야된다

 

2. 인터페이스의 모든 메서드는 public abstract 이다. 예외없이

 

 

 -리턴의 조건

 

타입( fighterable )메소드명()  {

fighterable f = (생략된 fighterable 타입 ) new fighter();

 // return 타입 ( fighterable) f 를 써야되는데

// new로 썻기에 리턴에 f를 안쓰고 리턴 f 로 받을수있다.

return f

}

 

 

-JDBC 표준개발

 

1. 개발시간을 단축할수있다.

2. 변경이 유리한 설계가 가능하다

3. 표준화 가능하다.

4. 중간 JDBC 집합을 중간에 넣으면 DB를 넣으면 변경을 안해도된다.

->표준화가 가능하다.

 

5. 서로 관계없는 클래스들을 관계를 맺어주는것에 대한

 

인터페이스로 따로 묶어서 

부모 <-> 자손 관계를 맺어줄수있다.

 

 

 

 

 

class Dropship extends AirUnit implements Repairable {

//    Dropship 객체new  상속. 자손  구현연결.  Repairable 

 

}

 

 

##### 인터페이스의 장점

 

inter ~사이 

face 얼굴(대상)

 

두 대상(객체)간의 (연결, 대화 , 소통) 을 톱는 '중간 역할'을 한다.

 

 

사용자가 껍데기를 눌러서 쉽게 사용하게끔 하는것

 

자판기 껍데기

 

 

 

 

버튼읠 껍데기를 만든다는 것으로 이해 = interface 

그리고 그안에 내용만 바꾸자

 

class A { 
 public void methodA ( I i ) {   // 매개변수의 타입(I) 과 매개변수의 이름(i)

       i. methodB();

     }

}

 

interface I { void methodB();   }

 

class B implements I {

   public void methoDB () {

      system.out.println("methodB()");

       }

}

 

-인터페이스 최종장 사용방법

 

1.

method()의 선언과

method()의 구현의 분리가 목적이다.

 

2. 변경을 최소화하기 위해서

 

 

 

-파라미터에 대한 

 

 메소드의 파라미터와 관련된 기본 개념을 소개하고 있으며, 파라미터의 타입, 파라미터의 순서, 가변인자(varargs) 같은 고급 주제도 다루고 있습니다. 이를 통해 파라미터에 대한 이해를 더욱 깊게 할 수 있습니다.

 

-파라미터의 규칙

 

자바에서 메소드의 파라미터는 "타입"과 "매개변수 이름"으로 구성됩니다. 이 두 요소가 메소드 내부에서 입력값을 어떻게 처리할지를 결정합니다.

타입: 파라미터가 받을 수 있는 데이터의 타입을 결정합니다. 이는 기본 데이터 타입(int, double, boolean 등)이 될 수도 있고, 참조 데이터 타입(String, List, 사용자 정의 클래스 등)이 될 수도 있습니다. 또한, 인터페이스도 파라미터의 타입이 될 수 있습니다.


매개변수 이름: 메소드 내부에서 파라미터를 참조할 때 사용되는 이름입니다. 이 이름은 메소드 내부에서만 유효하며, 메소드 외부에서는 접근할 수 없습니다.

 

 

 

반응형

댓글