[24.09.19목]슈퍼코딩w4:Java-OOP추상화

Michelle Kim·2024년 9월 19일

Java문법정리

목록 보기
5/6

📚 오늘 공부한 강의

35강 : 추상화

💙 35강 : 추상화

🦊 JAVA OOP의 좀 더 정교한 코드 추상화

클래스들 공통적인 속성|행위를 정의하여 코드 중복 줄이고, 다형성 실현함

🦊 추상클래스란?

실재 하지 않지만, 하위의 공통적인 속성|행위를 기준으로 정의한 개념

🦊 추상클래스 문법


🦊 추상클래스 특징

👉 실습: Animal 추상클래스로 변환하기

< 준비 >
이전에 구현한 “Animal”, “Fish”, “Person”, “Bird” 클래스 사용

< 진행 >
기존 Animal을 추상 클래스로 변경
새로운 구체 클래스 ”Dog”를 Animal을 상속하도록 구현하기

Animal.java

public abstract class Animal {
    // 속성
    protected String gender;

    // 행위
    public abstract void eat(String food);
    public abstract void sleep();
}

Bird.java

public class Bird extends Animal {
    private long weight;
    private String color;

    // 행위
    @Override
    public void eat(String food) {
        System.out.printf("새가 %s 을 부리로 쪼아 먹고 있습니다.\n", food);
    }

    @Override
    public void sleep() {
        System.out.println("새가 잠을 자고 있습니다.");
    }

    public void fly(){
        System.out.println("새가 날고 있습니다.");
    }
}

Dog.java

public class Dog extends Animal {

    @Override
    public void eat(String food) {
        System.out.printf("개는 %s 을 단단한 이빨로 물어 먹습니다.\n", food);
    }
    @Override
    public void sleep() {
        System.out.println("개는 잠을 잡니다.");
    }

Fish.java

public class Fish extends Animal {
    // 속성
    private boolean havingPoison;
    private String livingSea;

    // 행위

    @Override
    public void eat(String food) {
        System.out.printf("물고기가 %s 을 주둥이로 먹습니다.\n", food);
    }

    @Override
    public void sleep() {
        System.out.println("물고기가 잠을 자고 있습니다.");
    }
    public void swim(){
        System.out.println("물고기가 헤엄을 치고 있습니다.");
    }
}

Person.java

public class Person extends Animal {
    private String name;
    private String job;
    private int height;

    @Override
    public void eat(String food) {
        System.out.printf("사람이 %s을 젓가락으로 먹는다.\n", food);
    }

    @Override
    public void sleep() {
        System.out.println("사람이 자고 있습니다.");
    }
    public void walk(){
        System.out.println("사람이 걷고 있습니다.");
    }
}

AnimalTest.java

public class AnimalTest {

    public static void main(String[] args){
//        Animal animal = new Animal();
        Animal animal2 = new Bird();
        Animal animal3 = new Fish();
        Animal animal4 = new Person();
        Animal animal5 = new Dog();

//        feed(animal, "빼뺴로");
        feed(animal2, "벌레");
        feed(animal3, "모이");
        feed(animal4, "김밥");
        feed(animal5, "고기");

    }

    public static void feed(Animal animal, String food){
        animal.eat(food);
    }
}
profile
🇬🇧영국대학교)Computer Science학과 졸업 📚Data, AI, Backend 분야에 관심이 많습니다. 👉Email: kimbg9876@gmail.com

0개의 댓글