interface ICalculator{ public abstract int add(int num,int num2); public abstract int sub(int num,int num2); public abstract int mul(int num,int num2); int div(int num,int num2); } class PrintableInterface { public static void main(String[] args) { ICalculator calculator = new MyCalculator(); System.out.println(calculator.add(10, 20)); //30 System.out.println(calculator.sub(10, 20)); //-10 //Printable prn = new Printer(); //prn.print("Hello Java"); } }
package inhertest;
interface ICalculator {
public abstract int add(int num, int num2);
public abstract int sub(int num, int num2);
public abstract int mul(int num, int num2);
int div(int num, int num2);
}
class MyCalculator implements ICalculator {
@Override
public int add(int num, int num2) {
return num + num2;
}
@Override
public int sub(int num, int num2) {
return num - num2;
}
@Override
public int mul(int num, int num2) {
return num * num2;
}
@Override
public int div(int num, int num2) {
return num / num2;
}
}
public class InterfaceTest {
public static void main(String[] args) {
ICalculator calculator = new MyCalculator();
System.out.println(calculator.add(10, 20));
System.out.println(calculator.sub(10, 20));
System.out.println(calculator.mul(10, 20));
System.out.println(calculator.div(10, 20));
}
}
interface Printable { public abstract void print(String doc) ; } main(){ Printable prn = new Printer(); prn.print("Hello Java"); }
interface Printable3 {
public abstract void print(String doc);
}
class Printer3 implements Printable3 {
@Override
public void print(String doc) {
System.out.println(doc);
}
}
public class InterfaceTest {
public static void main(String[] args) {
Printable3 prn = new Printer3();
prn.print("Hello Java");
}
}
📌표준 애너테이션
애너테이션 | 설명 |
---|---|
@Override | 컴파일러에게 오버라이딩하는 메소드라는 것을 알림 |
@Deprecated | 앞으로 사용하지 않을 것을 권장하는 알림이 생김 |
@SuppressWarnings | 컴파일러의 특정 경고메시지가 나타나지 않게 해줌 |
@SafeVarangs | 제네릭스 타입의 가변인자에 사용 |
@FunctionalInterface | 함수형 인터페이스라는 것을 알림 |
@Native | Native메소드에서 참조되는 상수 앞에 붙임 |
String str = "age: " + 17;
📌 hashCode(), toString(), equals()는 꼭 알아야함
class A{ } public class Test { public static void main(String[] args) { A a = new A(); System.out.println(a); // a의 주소 뿌림 } }
📌 인터페이스의 역할
interface Printable { public void print(String doc); // 추상 메소드(=함수정의, 선언만) //(abstrct 생략 가능)인터페이스 무조건 public, abstract 함수 }
- 자바 인터페이스는 기본적으로 추상메소드의 모음이다.
- <<추상메소드>>는 위와 같이 구현부가 없는 메서드를 말한다.
class Printer3 implements Printable3 { @Override public void print(String doc) { System.out.println(doc); } }
- 구현부가 없으므로 인터페이스를 만든다면 반드시 구현하는 클래스를 만들어야 하며, 인터페이스를 구현하기로 한 클래스는 반드시 인터페이스에 명시되어 있는 추상메소드들을 모두 구현해야 한다. 만약 이를 구현하지 않으면 컴파일 에러가 발생한다.