프로그래밍 기술/안드로이드

[안드로이드] 42. Java 필드 재정의(override)

언제나휴일 2016. 5. 16. 09:37
반응형

[안드로이드] 42. Java 필드 재정의(override)


 

 만약 기반 클래스에 캡슐화한 멤버 필드와 같은 이름으로 파생 클래스에서 멤버 필드를 캡슐화하면 어떻게 될까요?

 

 이 때도 기반 클래스에 캡슐화한 멤버 필드는 무효화하여 파생 형식에서는 직접적으로 사용할 수는 없습니다. 하지만 무효화한 메서드를 호출하여 사용하는 것처럼 super 키워드를 이용하면 무효화 멤버 필드를 사용할 수 있습니다.

 

 실제 프로그래밍에서 메서드 재정의는 많은 곳에서 사용하지만 멤버 필드를 재정의는 개발자에게 혼돈만 가중시켜서 거의 사용하지 않습니다. 이에 관한 사항은 여러분께서 다양한 프로그래밍 과정을 통해 느끼고 판단할 수 있을 것입니다.

 

 예를 들어 음악가의 멤버 필드에 음악가 이름을 name 멤버 필드로 캡슐화하고 음악가를 파생하는 피아니스트에서 피아니스트 이름을 name 멤버 필드를 재정의한다고 가정합시다. 이 때 피아니스트 개체에는 기반 형식부분인 음악가 이름도 있고 피아니스트 이름도 존재하는 꼴이 됩니다. 이는 개발 과정에서 혼란만 가중할 뿐입니다.

 

public class Musician {

    protected String name;

    public Musician(String name){

        this.name = name;

    }

    public String getName(){

        return name;

    }

    public void play(){

        System.out.println(name+" 연주하다.");

    }

} 

 

public class Pianist extends Musician{

    String name;

    public Pianist(String name,String mname){

        super(mname);

        this.name = name;

    }

    @Override public void play(){

        super.play();

        System.out.println(super.name+", 피아니스트 "+name+" 딩동댕");

    }

}

public class Program {

    public static void main(String[] args){

        Pianist pianist = new Pianist();

        pianist.play();

    }

}

홍피아리스트 연주하다.

홍피아리스트, 피아니스트 홍길동 딩동댕

[소스]기반 형식의 멤버 필드를 파생 클래스에서 재정의한 예


관련 게시글

 

[안드로이드] 41. Java 메서드 재정의(override)

반응형