최원종의 개발 블로그

인터페이스 활용 본문

Java/Java 객체지향

인터페이스 활용

chl6698 2026. 3. 6. 16:31
// -- 인터페스 활용 --
        // 1. 구현 클래스를 개발하기 전에 표준 명세로 활용 했다.
        // 2. 프로그램을 실행 시키는 시점에서 다형성 및 유연한 코드를 적용시킬 수 있다.

 

실습 코

-UserInfo

package com.tenco._interface.ex;

public class UserInfo {

    private String userId;
    private String password;
    private String userName;

    public String getUserId() {
        return userId;
    }

    public String getPassword() {
        return password;
    }

    public String getUserName() {
        return userName;
    }

    public void setUserId(String userId) {
        this.userId = userId;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }
}

 

-interface UserInfoDao

package com.tenco._interface.ex;

public interface UserInfoDao {

    public abstract void insertUserInfo(UserInfo userInfo);

    public abstract void updateUserInfo(UserInfo userInfo);

    public abstract void deleteUserInfo(String userName);

    public abstract void readAllUserInfo();

}

 

-UserInfoMySqlDao

package com.tenco._interface.ex;

public class UserInfoMySqlDao implements UserInfoDao {

    @Override
    public void insertUserInfo(UserInfo userInfo) {
        System.out.println("INSERT INFO USER ....");
    }

    @Override
    public void updateUserInfo(UserInfo userInfo) {
        System.out.println("UPDATE FROM....");
    }

    @Override
    public void deleteUserInfo(String userName) {
        System.out.println("DELETE FROM....");
    }

    @Override
    public void readAllUserInfo() {
        System.out.println("SELECT * FROM ....");
    }
}

 

-UserInfoOracleDao

package com.tenco._interface.ex;

public class UserInfoOracleDao implements UserInfoDao {
    @Override
    public void insertUserInfo(UserInfo userInfo) {
        System.out.println("오라클 insert into ....");
    }

    @Override
    public void updateUserInfo(UserInfo userInfo) {
        System.out.println("오라클 update into ....");

    }

    @Override
    public void deleteUserInfo(String userName) {
        System.out.println("오라클 delete into ....");

    }

    @Override
    public void readAllUserInfo() {
        System.out.println("오라클 select into ....");

    }
}

 

-UserInfoClient(실행하는 코드)

package com.tenco._interface.ex;

public class UserInfoClient {

    private static String DB_TYPE = "MYSQL"; //DB타입 설정값 변경시 출력 결과 다름

    //코드 진입점
    public static void main(String[] args) {

        UserInfo userInfo = new UserInfo();
        userInfo.setUserId("ABC");
        userInfo.setUserName("홍길동");
        userInfo.setPassword("1234");

        //인터페이스 활용--
        //1. 구현 클래스를 개발하기 전에 표준 명세로 활용했다
        //2. 프로그램을 실행 시키는 시점에서 다형성 및 유연한 코드를 적용시킬 수 있다

        UserInfoDao userInfoDao = null;

        if (DB_TYPE.equals("MYSQL")) {
            userInfoDao = new UserInfoMySqlDao();//업케스팅 된 상태
        } else if (DB_TYPE.equals("ORACLE")) {
            userInfoDao = new UserInfoOracleDao();
        }

        userInfoDao.insertUserInfo(userInfo);
        userInfoDao.updateUserInfo(userInfo);
        userInfoDao.deleteUserInfo(userInfo.getUserName());
        userInfoDao.readAllUserInfo();
    }
}

 

-출력결과

더보기
DB_TYPE = "MYSQL"출력결과
DB_TYPE = "ORACLE"출력결과

 

'Java > Java 객체지향' 카테고리의 다른 글

인터페이스(interface)  (0) 2026.03.06
추상 클래스(abstract class)  (0) 2026.03.06
다형성(Polymorphism)  (0) 2026.03.05
포함관계와 집합관계  (0) 2026.03.04
연관관계(Association)  (0) 2026.03.04