Notice
Recent Posts
Recent Comments
Link
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
Tags more
Archives
Today
Total
관리 메뉴

요리사에서 IT개발자로

스파르타 부트캠프 Java 추상클래스와 상속 정리 (다락방) 본문

Java

스파르타 부트캠프 Java 추상클래스와 상속 정리 (다락방)

H.S-Backend 2024. 5. 29. 11:31

클래스 설계구조(다이어그램)

 

Iphone에도 call이 있다.

@Override
public void call(){
    System.out.println("아이폰에서 전화가 울렸습니다");
}

Sausung에도 call이 있다.

@Override
public void call(){
    System.out.println("갤럭시에서 전화가 울렸습니다.");
}

 

이렇게 각자의 행위를 수정해야 사용을 한다면 ?

Interface로 빼서 사용을 하는게 좋다

public interface Phone {

    void call();

}

이유? 

사람이 코드 구현 설계를 하다가 

call()행위에 대한 메서드를 정의 해 놓지 않으면

or

Itelli J에서는

call()행위에 대한 메서드를 정의 해 놓지 않으면

 

컴파일 에러가 발생한다.


추상클래스 같은 경우

 

sarch() 을 예를들자면

search 메서드안의 검색하다라는 print가 정의되있다.

public abstract class  SmartPhone implements Phone, Camera {
    private String brand;
    
    public void search(){
        System.out.println("검색하다");
    };

SmartPhone을 상속받는

Iphone과 Galaxy,

Iphone을 상속받는 IPhone15도

 

search메서드 행위를 사용할 수 있다.

 

결국

변경을 하지않아도 사용할 수 있고 변경을 해서 사용해도 되는것.

Abstract = 추상클래스

 

각자의 클래스에서  Interface안의 지정된 행위를 

필수로 구현해서 정의해야되고 

 

정의한 메소드(행위)를

각 클래스 특성마다 맞게 수정해서 사용해야되는것

 

Interface = 인터페이스

 


public interface Phone {

    void call();

}
public class Main {
    public static void main(String[] args) {
        IPhone iPhone = new IPhone("15");
        Iphone15 iphone15 = new Iphone15();
        Galaxy galaxy = new Galaxy("23");

        //Interface에 있는 call메스드를 사용할 수 있다.

        iPhone.call();
        galaxy.call();

public class Main {
    public static void main(String[] args) {
        IPhone iPhone = new IPhone("15");
        Iphone15 iphone15 = new Iphone15();
        Galaxy galaxy = new Galaxy("23");

        //Interface에 있는 call메스드를 사용할 수 있다.

        iPhone.call();
        galaxy.call();
        iphone15.call();

이렇게 각각의 클래스 특성에 맞게 정의해서 사용하는것

Interface


public abstract class  SmartPhone implements Phone, Camera {
    private String brand;
    

    public void search(){
        System.out.println("검색하다");
    };

 

public class Main {
    public static void main(String[] args) {
        IPhone iPhone = new IPhone("15");
        Iphone15 iphone15 = new Iphone15();
        Galaxy galaxy = new Galaxy("23");

        //SmartPhone에 있는 search를 상속받아 사용
        iPhone.search();
        galaxy.search();
        iphone15.search();

 

SmartPhone에 정의되있는걸 가져와서 사용해도되고 변경해서 사용할 수 있다.

@Override
public void search() {
    System.out.println("사파리에서 검색");
}
@Override
public void search() {
    System.out.println("구글에서 검색");
}

 

 

반응형