ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Java - 추상화 (Abstraction)
    Java 2018. 1. 19. 10:38
    반응형
    // 추상화 - 기본적인건 만들어놔야함, 상속을 받으면 오버라이드
    // 추상 메서드를 통해 꼭 구현할 메서드를 오버라이드 할 수 있다.
    // 꼭 구현될 기능만 모아둔 것, 둘은 상속 관계

    // 추상클래스는 객체화 할 수 없고, 자식 외엔 부를 수 없다.
    // 추상클래스의 생성자에 접근 하고 싶다면 super()를 호출 해야 한다.
    // 추상화 클래스 및 메서드를 선언 하기 위해서는 abstract라는 키워드를 선언해야 한다.




    <---------------- Abstract Class ---------------------->

    public abstract class Mamal { // 추상화 클래스

        public String name;
        
        public Mamal(String name) {
            this.name = name;
        }
        
        public void birth() {
            System.out.println(name + "이 자식을 낳는다.");
        }
        
        public void eat() {
            System.out.println(name + "이 먹이를 먹는다.");
        }

    }

    < Person Class >

    public class Person extends Mamal {

        public Person(String name) {
            super(name);
        }
        
        public void useTool() {
            System.out.println(name + "이 도구를 사용한다.");
        }
        
        public void social() {
            System.out.println(name + "이 생활을 한다.");
        }
        
        public void talk() {
            System.out.println(name + "이 말을 한다.");
        }

    }


    < Main >

    public class Main {

        public static void main(String[] args) {
            
            // 1. 추상화 클래스는 상속해서 사용 해야 한다.
            // 2. 추상화 클래스는 외부에서 사용할 수 없다. (객체화가 안된다)
            // Mamal mal = new Mamal(); -> X
            
            Person p = new Person("기린");
            // 부모것 ( Mamal - abstract )
            p.birth();
            p.eat();
            
            // 자식것 ( Person )
            p.useTool();
            p.social();
            p.talk();

        }

    }






    <---------------- Abstract Method ---------------------->

    public class Concrete extends Abs {

        // 추상 메서드는 Abs를 상속 받음과 동시에 자동 생성 된다.
        @Override
        public void must1() {

        }

        @Override
        public void must2() {

        }
        
        public void child() {
            
        }
    }


    public abstract class Abs {

        // 추상 메서드 (이 메서드는 필수로 만들어야 하는 메서드)
        public abstract void must1();
        public abstract void must2();
        // 일반 메서드 (그냥 사용하거나 오버라이드 할 수 있는 메서드)
        public void parent() {
            System.out.println("그냥 사용하거나 오버라이드 할 수 있는 메서드");
        };
        
    }


    반응형

    'Java' 카테고리의 다른 글

    Java - Api 참고 사이트  (0) 2018.01.23
    Java - Interface  (0) 2018.01.19
    Java - Casting 명시적변환  (0) 2018.01.18
    Java - Promotion, Casting 묵시적, 명시적 형변환  (0) 2018.01.18
    Java - 다형성(Polymarphism)  (0) 2018.01.18

    댓글

Designed by Tistory.