인터페이스 구현과 선언

interface Addin{
	public int add(int a, int b); // abstract가 생략됨
	public int add(int a);
	/// 메소드 오버로딩
	default void pr(){ // deafault를 붙였으므로 추상메소드가 아님!
		System.out.println("희희");
		
	}
}
class Add implements Addin{
	public int add(int a, int b) {
		return a+b;
	}
	public int add(int a) {
		int sum=0;
		for(int i=1;i<=a;i++) {
			sum+=i;
		}
		return sum;
	}
}
public class mmdd0229 {
	public static void main(String[] args) {
		Add a=new Add();
		System.out.println(a.add(1,4));
		System.out.println(a.add(10));
		//Addin a=new Addin();
	}
}

다중 상속

예시1)

interface Animal{
 public void bear();
}
interface Fish{
	 public void swim();
}
class A implements Animal, Fish{ //다중상속
	@Override
	public void bear(){
		System.out.println("낳는다");
	}
	@Override
	public void swim() {
		System.out.println("수영한다");
	}
}
public class mmdd0229 {
	public static void main(String[] args) {
	
		A a = new A();
		a.bear();
		a.swim();
		
		
	}
}

예시2)

interface Po{
	public void pr(int a, String b);
	public void pr(String b);
		
	}
	class Point implements Po{
		@Override
		public void pr(int a, String b){
			System.out.println(b+"는 "+a+"원 입니다.");
		}
		@Override
		public void pr(String b){
			System.out.println(b);
	}
	}
	
public class mmdd0229 {
	public static void main(String[] args) {
	
		Po p=new Point();

		p.pr(30000,"java"); 

		p.pr("python"); }
		
//실행 결과) java책은30000원
//           python

	}

예시3)

interface A{
	public void funcA();//추상 메소드
}
interface B{
	public void funcB();//추상 메소드
}
interface C extends A,B{ //다중상속
	public void funcC();//추상 메소드
}
class D implements C{
	@Override
	public void funcA() {
		System.out.println("funcA");
	}
	@Override
	public void funcB() {
		System.out.println("funcB");
	}
	@Override
	public void funcC() {
		System.out.println("funcC");
	}
}
public class test {

	public static void main(String[] args) {
		
		D d1=new D();
		A a1=d1; //업캐스팅
		a1.funcA();
		
		B b1=d1; //업캐스팅
		b1.funcB();
		
		C c1=d1; //업캐스팅
		c1.funcA();
		c1.funcB();
		c1.funcC();
		
		

	}

}

다중상속일때 (인터페이스 2개 이상일때!)

public class Classname implements interfaceA, interfaceB

public interface 자식interface extends 부모interface1, 부모interface2

class Tv{
	public void on() {
		System.out.println("티비 켬");
	}
}
interface Computer{
	public void m();
}
class Com{
	public void m() {
		System.out.println("컴");
	}
}

class Ipad extends Tv implements Computer{
	Com c=new Com();
	
	@Override
	public void m() {
		c.m(); //System.out.println("컴");
	}
	public void ip() {
		m();	//컴
		on();  //티비 켬
	}
}
public class test {
	public static void main(String[] args) {
		
		Ipad i=new Ipad();
		Tv t=i;  //up
		Computer c=i;//up
		
		i.ip();	
	}
}

인터페이스 함수

interface Food{
	public String name();
}

class Pizza implements Food{
	@Override
	public String name(){
		return "피자";
	}
}
class Steak implements Food{
	@Override
	public String name(){
		return "스테이크";
	}
}
public class test {
	static void pr(Food f) {
		System.out.println(f.name());
	}
	
	public static void main(String[] args) {

		pr(new Pizza()); //Food f=new Pizza();
		pr(new Steak()); //Food f=new Steak();
		
	}
}