컴퓨터/JAVA

[JAVA] 간단한 클래스 예제

도도새 도 2023. 6. 28. 17:32

간단한 클래스 예제

 

부모 클래스 Animal

public class Animal{//public private protected
    private int feetNum;
    public Animal(int feetNum){
        this.feetNum = feetNum;
    }
    public void sound(){
        System.out.println("기본 동물 울음소리 ~~" );
    }

    public void introduce(){
        System.out.println("기본 동물 소개 ~~");
    }
}

부모 클래스를 정의한다.

Animal 생성자는 발의 갯수를 받아 멤버 변수를 초기화한다.

sound 메서드는 동물 기본 울음소리를 출력한다.

introduce 메서드는 동물 기본 소개를 출력한다.

 

자식 클래스 1 Cat

public class Cat extends Animal{
    private boolean isHomeCat;
    public Cat(int feetNum, boolean isHomeCat){
        super(feetNum);
        this.isHomeCat = isHomeCat;
    }
    @Override
    public void sound(){
        System.out.println("고양이 냐옹냐옹~");
    }

    @Override
    public void introduce(){
        if(this.isHomeCat) System.out.println("나는 집고양이다옹");
        else System.out.println("나는 야생 고양이다옹");
    }
}

 

자식 Cat클래스를 정의한다.

public class Cat extends Animal : extends 키워드를 사용하여 Animal의 자식임을 알린다.

super(feetNum) : 부모의 생성자를 사용하여 멤버변수 feetNum을 초기화한다.

sound() : 부모에 이미 정의된 sound를 상속받았으나, 고양이 울음소리로 오버라이드한다. 이제 Cat으로 생성된 객체의 sound()는 고양이 소리가 된다.

introduce() : 부모에 이미 정의된 introduce()를 상속받으나 고양이 소개로 오버라이드한다. 생성자에서 초기화한 isHomeCat에 따라 집고양이인지 아닌지를 출력한다.

 

자식 클래스 2 Snake

public class Snake extends Animal{
    private boolean isPoisonous;
    public Snake(int feetNum, boolean isPoisonous){
        super(feetNum);
        this.isPoisonous = isPoisonous;
    }

    @Override
    public void sound(){
        System.out.println("뱀은 쉭쉭쉭~~");
    }

    @Override
    public void introduce(){
        if(this.isPoisonous) System.out.println("나는 독이 있다!");
        else System.out.println("나는 독이 없다!!!");
    }
}

 

위와 동일

 

메인 클래스

public class Main {
    public static void main(String[] args){

        Animal ani1 = new Animal(3);
        ani1.sound();
        ani1.introduce();

        Cat cat1 = new Cat(4, true);
        Cat cat2 = new Cat(4, false);

        cat1.sound();
        cat1.introduce();

        cat2.sound();
        cat2.introduce();

        Snake snake1 = new Snake(0, true);
        Snake snake2 = new Snake(0, false);

        snake1.sound();
        snake1.introduce();

        snake2.sound();
        snake2.introduce();

        Animal[] anis = new Animal[5];
        anis[1] = cat1;
        anis[2] = cat2;
        anis[3] = snake1;
        anis[4] = snake2;

        for(Animal ani : anis){
            if(ani instanceof Cat) System.out.println("캣 소속 : 키운다.");
            else if (ani instanceof Snake) System.out.println("뱀 소속 : 죽인다.");
        }

        System.out.println(snake1 instanceof Snake);//해당 클래스의 인스턴슨인지 확인
        System.out.println(cat1 instanceof Cat);//상속 관계에 있어도 true
        System.out.println(cat1 instanceof Animal );

    }

}

각각의 상황대로 객체를 생성해 클래스를 확인한다.

 

출력

기본 동물 울음소리 ~~

기본 동물 소개 ~~

고양이 냐옹냐옹~

나는 집고양이다옹

고양이 냐옹냐옹~

나는 야생 고양이다옹

뱀은 쉭쉭쉭~~

나는 독이 있다!

뱀은 쉭쉭쉭~~

나는 독이 없다!!!

캣 소속 : 키운다.

캣 소속 : 키운다.

뱀 소속 : 죽인다.

뱀 소속 : 죽인다.

true

true

true

Process finished with exit code 0

클래스와 상속에 대한 간단한 예제이다. 처음 클래스를 배울 때 이 예제를 잘 확인하면 (아마) 클래스를 이해하는 데에 큰 어려움이 없을 것으로 예상된다