– 인터페이스
자바에서 인터페이스(Interface)는 클래스가 구현해야 하는 메서드의 집합을 정의하는데 사용되는 중요한 개념입니다. 인터페이스는 다형성을 지원하고, 여러 클래스가 공통된 행동을 제공하도록 하는데 중요한 역할을 합니다.
- 모든 메서드가 추상 메서드로 선언됨 public abstract
- 모든 변수는 상수로 선언됨 public static final
public interface Calc { double PI = 3.14; int Error = -9999999; int add(int num1, int num2); int substract(int num1, int num2); int times(int num1, int num2); int divide(int num1, int num2); } public abstract class Calculator implements Calc{ @Override public int add(int num1, int num2) { return num1 + num2; } @Override public int substract(int num1, int num2) { return num1 - num2; } } public class CompleteCalc extends Calculator{ @Override public int times(int num1, int num2) { return num1 + num2; } @Override public int divide(int num1, int num2) { if (num2 == 0){ return Error; } else { return num1 / num2; } } public void showInfo(){ System.out.println("모두 구현하였습니다."); } } public class CompleteCalculator { public static void main(String[] args) { CompleteCalc calc = new CompleteCalc(); int num1 = 10; int num2 = 2; System.out.println(num1 + " + " + num2 + " = " + calc.add(num1, num2)); System.out.println(num1 + " - " + num2 + " = " + calc.substract(num1, num2)); System.out.println(num1 + " * " + num2 + " = " + calc.times(num1, num2)); System.out.println(num1 + " / " + num2 + " = " + calc.divide(num1, num2)); calc.showInfo(); } }
– 인터페이스 를 활용한 다형성 구현(dao 구현하기)
- 하나의 인터페이스를 여러 객체가 구현하게 되면 클라이언트 프로그램은 인터페이스의 메서드를 활용하여 여러 객체의 구현을 사용할 수 있음(다형성)
package ch13.domain.uesrinfo; public class UserInfo { private String userId; private String passwd; private String userName; public String getUserId() { return userId; } public void setUserId(String userId) { this.userId = userId; } public String getPasswd() { return passwd; } public void setPasswd(String passwd) { this.passwd = passwd; } public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } } package ch13.domain.uesrinfo.dao; import ch13.domain.uesrinfo.UserInfo; public interface UserInfoDao { void insertUserInfo(UserInfo userInfo); void updateUserInfo(UserInfo userInfo); void deleteUserInfo(UserInfo userInfo); } ch13.domain.uesrinfo.dao.oracle; import ch13.domain.uesrinfo.UserInfo; import ch13.domain.uesrinfo.dao.UserInfoDao; public class UserInfoOracleDao implements UserInfoDao { @Override public void insertUserInfo(UserInfo userInfo) { System.out.println("insert into ORACLE DB userId = " + userInfo.getUserId()); } @Override public void updateUserInfo(UserInfo userInfo) { System.out.println("update into ORACLE DB userId = " + userInfo.getUserId()); } @Override public void deleteUserInfo(UserInfo userInfo) { System.out.println("delete into ORACLE DB userId = " + userInfo.getUserId()); } package ch13.domain.uesrinfo.dao.mysql; import ch13.domain.uesrinfo.UserInfo; import ch13.domain.uesrinfo.dao.UserInfoDao; public class UserInfoMySqlDao implements UserInfoDao { @Override public void insertUserInfo(UserInfo userInfo) { System.out.println("insert into MYSQL DB userId = " + userInfo.getUserId()); } @Override public void updateUserInfo(UserInfo userInfo) { System.out.println("update into MYSQL DB userId = " + userInfo.getUserId()); } @Override public void deleteUserInfo(UserInfo userInfo) { System.out.println("delete into MYSQL DB userId = " + userInfo.getUserId()); } } package ch13.client.web; import ch13.domain.uesrinfo.UserInfo; import ch13.domain.uesrinfo.dao.UserInfoDao; import ch13.domain.uesrinfo.dao.mysql.UserInfoMySqlDao; import ch13.domain.uesrinfo.dao.oracle.UserInfoOracleDao; import java.io.FileInputStream; import java.io.IOException; import java.util.Properties; public class UserInfoClient { public static void main(String[] args) throws IOException { FileInputStream fis = new FileInputStream("db.properties"); Properties prop = new Properties(); prop.load(fis); String dbType = prop.getProperty("DBTYPE"); System.out.println(dbType); UserInfo userInfo = new UserInfo(); userInfo.setUserId("user01"); userInfo.setPasswd("!@#$!12345"); userInfo.setUserName("James"); UserInfoDao userInfoDao = null; if (dbType.equals("ORACLE")){ userInfoDao = new UserInfoOracleDao(); } else if (dbType.equals("MYSQL")){ userInfoDao = new UserInfoMySqlDao(); } else { System.out.println("not support"); } if (userInfoDao != null){ userInfoDao.insertUserInfo(userInfo); userInfoDao.updateUserInfo(userInfo); userInfoDao.deleteUserInfo(userInfo); } } } db.properties = 디비; DBTYPE = ORACLE