– 인터페이스
자바에서 인터페이스(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