본문 바로가기
Java | spring/자바 객체지향

Java Interface 확장, 예제(멤버변수 변경 에러 이유)

by 워니 wony 2019. 5. 7.

 

자바의 인터페이스 개념이 궁금하다면 아래 내용부터 확인.

 

 

Java Interface 인터페이스 개념잡기!

인터페이스 Interface 자바에서는 class의 다중상속을 할 수 없다. 다중상속의 효과를 기대할 목적으로 interface를 이용 interface도 하나의 자료형(Date Type)으로 생각 상수와 메소드 선언부 만으로 구성(추상..

developsd.tistory.com

 

 

클래스와 인터페이스 상속

- class C extends A implements B

- 인터페이스를 여러 가지는 경우

   class C extends A implements B, D

 

class A

{

    String title;

    public A(String title)
    {
    	this.title = title;
    }

    public void info()
    {
    	System.out.println(title);
    }

}



interface B
{
    int year = 2018;
    public void pro();
}


class C extends A implements B
{
    public C(String title)
    {
    	super(title);
    }

    public void pro()
    {
    	System.out.println(year);
    }

}



class InterfaceTest01
{
    public static void main(String[] args)
    {
      C test = new C("Fun Fun Java");
      System.out.println(test.title);
      test.pro();
    }
}

 

(결과값)

Fun Fun Java

2018

 

 

 

 

ㅇ 위의 예제에서 상속 받은 변수의 변경하기

class A
{
    String title;
    public A(String title)
    {
    	this.title = title;
    }
    public void info()
    {
    	System.out.println(title);
    }
}



interface B
{
    int year = 2018;
    public void pro();
}

class C extends A implements B
{
    public C(String title)
    {
    	super(title);
    }

    public void pro()
    {
    	System.out.println(year);
    }

}


class InterfaceTest01
{
    public static void main(String[] args)
    {
        C test = new C("Fun Fun Java");
        System.out.println(test.title);
        test.pro();

        test.title="Exciting Java";
        System.out.println(test.title);
    }
}

(결과값)

Fun Fun Java

2018

Exciting Java

 

 

 

 

ㅇ 인터페이스의 멤버변수는 상수로 변경이 불가능 하다.

    - final 생략된 것이다.

    - 만약 변경하고자 하는 경우 아래 처럼 오류가 발생한다.

class A
{
    String title;

    public A(String title)
    {
    	this.title = title;
    }

    public void info()
    {
    	System.out.println(title);
    }
}


interface B
{
    int year = 2018;
    public void pro();
}

class C extends A implements B
{
    public C(String title)
    {
    	super(title);
    }

    public void pro()
    {
    	System.out.println(year);
    }
}



class InterfaceTest01
{
    public static void main(String[] args)
    {
        C test = new C("Fun Fun Java");
        System.out.println(test.title);
        test.pro();

        test.title="Exciting Java";
        System.out.println(test.title);

        test.year = 2019;
        System.out.println(test.year);
    }
}

(결과값)

InterfaceTest01.java:45: error: cannot assign a value to final variable year

                test.year = 2019;

                    ^

1 error

 

반응형

댓글