본문 바로가기

자바/클래스

인터페이스 interface

예제1)


public class Test7 {

public static void main(String[] args) {

System.out.println(Demo7.a); //10 => 인터페이스는 static이 들어가 있기때문에 바로 사용가능.

Ex7 ob=new Ex7();

ob.write(); // 테스트.........

ob.print(); // print.................

Demo7 oo=new Ex7(); // 업캐스팅 //Demo7아버지를 Ex7자식으로 업캐스팅함.

oo.write();

// oo.print();  //에러

((Ex7)oo).print(); // 다운 캐스팅, 업된것만 다운캐스팅 가능

}

}


/*

 * 인터페이스 : 메소드가 선언만 있고 정의가 없다.

 * 변수는 static final 만 가능 하며 붙이지 않아도 public static final 기능을 가짐.

 * 메소드는 선언만 가능하고 자동으로 public abstract 자료형 메소드() 가 된다.

 * 인터페이스를 구현한 클래스 중 추상클래스가 아닌 경우에는 인터페이스의 모든 메소드를 재정의 해야한다.

 * 인터페이스는 다중 상속을 지원한다.

 */

interface Demo7{

public int a=10;        // public 안붙여도 됨.

public void write();  // public 안붙여도 됨.

}


class Ex7 implements Demo7 {

@Override

public void write() {

System.out.println("테스트........."); //재정의를 한다.

}

public void print() {

System.out.println("print.................");

}

}


예제1 결과)


10

테스트.........

print.................

테스트.........

print.................


========================================================================================================================================

예제2)

public class Test8 {
public static void main(String[] args) {
Sam1 ob1=new Demo8(); //업캐스팅
Sam2 ob2=new Demo8(); //업캐스팅  //Sam1도 아버지 Sam2도 아버지가 된다.
Demo8 ob3=new Demo8();
ob1.write();
// ob1.print(); //컴파일오류(컴파일시 인지하지 못함)
((Demo8)ob1).print(); // 다운캐스팅
// ob2.write(); 에러.
ob2.print();
ob3.write();
ob3.print();
}
}

interface Sam1 {
public void write();
}
interface Sam2 {
public void print();
}

class Demo8 implements Sam1,Sam2 {    // implements로 interface의 정의되지않은 메서드를 가져와서 재정의한다. 인터페이스 여러개를 가져와 다중상속받듯 사용가능하다
@Override
public void print() {
System.out.println("print.........");
}
@Override
public void write() {
System.out.println("write................");
}
}

예제2 결과)

10
테스트.........
print.................
테스트.........
print.................

=====================================================================================================================================

예제3)

package com.test0520;

public class Test9 {
public static void main(String[] args) {
Sam5 ob=new Demo9();
ob.print();
ob.write();
ob.test();
}
}

interface Sam3{
public void write();
}

interface Sam4{
public void print();
}
//인터페이스 상속,다중 상속지원
interface Sam5 extends Sam3,Sam4 {    // 인터페이스로 인터페이스를 상속받을 때는 extends?
public void test();
}

//implements sam5인터페이스와 상속받은 인터페이스의 메서드 모두 불러옴 
class Demo9 implements Sam5 {
@Override
public void write() {
System.out.println("wirte......");
}
@Override
public void print() {
System.out.println("print......");
}
@Override
public void test() {
System.out.println("test......");
}
}

예제3 결과)

print......
wirte......
test......


'자바 > 클래스' 카테고리의 다른 글

anonymous class 익명클래스  (0) 2013.05.21
내부클래스  (0) 2013.05.21
abstract 클래스  (0) 2013.05.21
상속 super  (0) 2013.05.21
Scanner 클래스  (0) 2013.05.19