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");
    }
}
▼정답
interface ICalculator { // I = interface를 뜻함.
	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 InterFace {
	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 Printable {
	void print(String doc);
}
class Printer implements Printable { // implements : interface를 구현한다.
	@Override
	public void print(String doc) {
		System.out.println(doc);
	}
}
public class InterFace {
	public static void main(String[] args) {
		Printable prn = new Printer();
		prn.print("Hello Java");
	}
}
▼정답
주석처럼 프로그램에 영향을 미치지 않으면서, 유용한 정보를 제공하는 것
애너테이션 자체가 하나의 기능(함수역할을 함)이 들어가는 경우가 많음
@Override
String str = "age: " + 17;
▼정답
[결과]age: 17
1.String s = String.valueOf(x);
2.return (obj == null) ? "null" : obj.toString();
obj에 "age: " + 17;이 대입되었기에 toString형으로 바뀜
▼정답
Object = 공통적으로 사용될 만한 함수(11개)를 부모로 올림
스레드 관련 5개 빼고, 오버라이딩 자주 사용하는 3개 - toString / hashCode / equals
부모로 올리면 다형성과 오버라이딩 활용 가능
모든 클래스는 Object를 상속한다.
class A{
}
public class Test {
	public static void main(String[] args) {
		A a = new A();
		System.out.println(a); // a의 주소 뿌림
	}
}
▼정답
Object에서 호출해온다.
public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
toHexString : 16진수로 뿌리는 hasCode() 주소값
▼정답
1. interface = 상수와 + abstract(추상)함수(바디가 없는 함수)
2. interface에는 변수가 올 수 없다.
인터페이스(interface) = 자손이 구현하라. (갑(의뢰)→을(구현))
2개 이상의 클래스를 상속받을 수 있다.
예시)
class C implements A, B{}