βΆ μΈν°νμ΄μ€
μΆμ λ©μλμ μμλ‘λ§ μ΄λ£¨μ΄μ§ κ².
ꡬνλ μ½λκ° μκΈ° λλ¬Έμ λΉμ°ν μΈν°νμ΄μ€λ‘ μΈμ€ν΄μ€λ₯Ό μμ±ν μ μλ€.
Calc μΈν°νμ΄μ€ λ§λ€κΈ°
-μΈν°νμ΄μ€μ μ μΈν λ©μλλ λͺ¨λ ꡬν μ½λκ° μλ μΆμ λ©μλ.
μ΄λ€ λ©μλλ public abstract μμ½μ΄λ₯Ό λͺ μμ μΌλ‘ μ°μ§ μμλ μ»΄νμΌ κ³Όμ μμ μλμΌλ‘ μΆμ λ©μλλ‘ λ³νλλ€.
κ·Έλ¦¬κ³ μΈν°νμ΄μ€μ μ μΈν λ³μλ λͺ¨λ μ»΄νμΌ κ³Όμ μμ κ°μ΄ λ³νμ§ μλ μμλ‘ μλ λ³νλλ€.
public static final μμ½μ΄λ₯Ό μ°μ§ μμλ 무쑰건 μμλ‘ μΈμνλ€.
β
ββ
βΆ ν΄λμ€μμ μΈν°νμ΄μ€ ꡬννκΈ°
μ μΈν μΈν°νμ΄μ€λ₯Ό ν΄λμ€κ° μ¬μ©νλ κ²μ 'ν΄λμ€μμ μΈν°νμ΄μ€λ₯Ό ꡬννλ€'λΌκ³ νννλ€.
μΈν°νμ΄μ€μμλ μΈν°νμ΄μ€μ μ μΈν κΈ°λ₯μ ν΄λμ€κ° ꡬννλ€λ μλ―Έλ‘ implements μμ½μ΄λ₯Ό μ¬μ©νλ€.
-μΆμ λ©μλ times( )μ divide( )λ₯Ό ꡬννμ§ μμμΌλ―λ‘ Calculatorλ μΆμ ν΄λμ€μ΄λ€.
package interfaceex;
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 num1 / num2;
else
return Calc.ERROR; // num2κ° 0, μ¦ λλλ μκ° 0μΈ κ²½μ°μ λλΉν΄ μ€λ₯ λ°ν
}
@Override
public int square(int num) {
return num * num;
}
public void showInfo() {
System.out.println("Calc μΈν°νμ΄μ€λ₯Ό ꡬννμμ΅λλ€."); // CompleteCalcμμ μΆκ°λ‘ ꡬνν λ©μλ
}
}
-μμ§ κ΅¬ννμ§ μμ times( )μ divide( ) μΆμ λ©μλλ₯Ό μ΄ ν΄λμ€μμ ꡬννλ€.
package interfaceex;
public class CalculatorTest {
public static void main(String[] args) {
int num1 = 10;
int num2 = 5; // μ¬κΈ° 0μ λ£μΌλ©΄ divide λΆλΆμ Calc.ERROR κ° μΆλ ₯λ¨.
CompleteCalc calc = new CompleteCalc();
System.out.println(calc.add(num1, num2));
System.out.println(calc.substract(num1, num2));
System.out.println(calc.times(num1, num2));
System.out.println(calc.divide(num1, num2));
System.out.println(calc.square(num1));
calc.showInfo();
}
}
-8νμ 보면 ꡬ체μ μΈ ν΄λμ€μΈ CompleteCalc ν΄λμ€λ§ μΈμ€ν΄μ€λ₯Ό μμ±ν μ μλ€.
Calculator ν΄λμ€λ μΆμ ν΄λμ€μ΄λ―λ‘ μΈμ€ν΄μ€λ₯Ό μμ±ν μ μκ³ , Calc μΈν°νμ΄μ€λ μΆμ λ©μλλ‘λ§ μ μΈλμκΈ° λλ¬Έμ μΈμ€ν΄μ€λ₯Ό μμ±ν μ μλ€.
β
β
β νμ΄
Calculator ν΄λμ€λ μΈν°νμ΄μ€μμ μ μΈν μΆμ λ©μλ μ€ μΌλΆ λ©μλλ§ κ΅¬ννμΌλ―λ‘ μΆμ ν΄λμ€μ΄λ€.
κ·Έλ¦¬κ³ μ΄λ₯Ό μμλ°μ CompleteCalc ν΄λμ€λ Calculator ν΄λμ€μμ ꡬννμ§ μμ λλ¨Έμ§ μΆμ λ©μλλ₯Ό λͺ¨λ ꡬννκ³ showInfo( ) λ©μλλ₯Ό μΆκ°λ‘ ꡬννλ€.
β
β
μΈν°νμ΄μ€λ₯Ό ꡬνν ν΄λμ€κ° μμ λ κ·Έ ν΄λμ€λ ν΄λΉ μΈν°νμ΄μ€νμΌλ‘ 묡μμ ν λ³νμ΄ μ΄λ£¨μ΄μ§λ©°, ν λ³νλμμ λ μ¬μ©ν μ μλ λ©μλλ μΈν°νμ΄μ€μμ μ μΈν λ©μλλΏμ΄λ€.
β
β
β
λ νΌμ μ½λ©) Calc μΈν°νμ΄μ€μ μλ‘μ΄ λ©μλ μΆκ°νκΈ°
Calc μΈν°νμ΄μ€μ int square(int num) λ©μλλ₯Ό μΆκ°λ‘ μ μΈνλ€. square( ) λ©μλλ 맀κ°λ³μλ‘ μ λ¬λ κ°μ μ κ³±μ λ°ννλ λ©μλμ΄λ€. μΈν°νμ΄μ€μ λ©μλλ₯Ό μΆκ°νκ³ CompleteCalcμμ ꡬνν ν CompleteCalcTest ν΄λμ€μμ λ©μλλ₯Ό νΈμΆν΄λ³΄λΌ.
package interfaceex;
public interface Calc {
double PI = 3.14;
int ERROR = -999999999;
int add(int num1, int num2);
int substract(int num1, int num2);
int times(int num1, int num2);
int divide(int num1, int num2)
int square(int num);
}
package interfaceex;
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 num1 / num2;
else
return Calc.ERROR;
}
@Override
public int square(int num) {
return num * num;
}
public void showInfo() {
System.out.println("Calc μΈν°νμ΄μ€λ₯Ό ꡬννμμ΅λλ€.");
}
}
package interfaceex;
public class CalculatorTest {
public static void main(String[] args) {
int num1 = 10;
int num2 = 5;
CompleteCalc calc = new CompleteCalc();
System.out.println(calc.add(num1, num2));
System.out.println(calc.substract(num1, num2));
System.out.println(calc.times(num1, num2));
System.out.println(calc.divide(num1, num2));
System.out.println(calc.square(num1));
}
}
<μ€ν κ²°κ³Ό>
β
'Java' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[Java] λν΄νΈ λ©μλ (0) | 2021.02.20 |
---|---|
[Java] μΈν°νμ΄μ€μ λ€νμ± (0) | 2021.02.20 |
[Java] κ°λ μ‘κΈ° 2 (κ³΅λΆ κΈ°λ‘) (0) | 2021.02.20 |
[Java] κ°λ μ‘κΈ° (κ³΅λΆ κΈ°λ‘) μμ±μ€ (0) | 2021.02.20 |
[Java] μκ³ λ¦¬μ¦ μμ (μ νμ λ ¬) (0) | 2021.02.20 |
λκΈ