happy cat image

everdevel

Web Technology, 에버디벨

UI 변경

EEOS

에버디벨 책을 학습할 수 있는 클라우드 개발 환경을 제공합니다.
개발환경구축없이 태블릿에서도 개발할 수 있는 책의 예제와 프로젝트
오직 당신을 위한 스토리지, URL, DB, 무제한 트래픽
그리고 웹기반 개발환경을 제공합니다.

더 알아보기
에버디벨이 만든 클라우드 개발환경을 소개합니다.

abstract

이번에는 abstract 키워드에 대해서 알아볼게요.
앞에서 우리는 인터페이스에 대해서 학습했습니다.
규칙을 정하는 기능을 했었죠.
abstract 키워드를 사용하면 클래스에서도 규칙을 정할 수 있습니다.
abstract 키워드를 사용하여 생성한 클래스를 추상클래스 라고 합니다.
추상클래스를 상속받은 자식클래스는 추상 부모 클래스의 규칙을 따릅니다.

클래스에 abstract 키워드 사용 방법

abstract class 클래스명{}

인터페이스와 다른점은 추상클래스에도 클래스이므로 메소드를 선언할 수 있어요 규칙도 만들수 있고요.
인터페이스 + 클래스 = 추상클래스 이렇게 보시면 됩니다. 그리고 추상 클래스내에서 자식 클래스도 꼭 선언해야하는 메소드가 있다 그러면 메소드에도 abstract 키워드를 사용합니다.

메소드에 abstract 키워드 사용 방법

abstract 접근제한자 function 메소드();

자 그럼 한번 해봅시다.
추상 클래스를 만들거에요. 그리고 그 추상 클래스를 상속받는 자식클래스도 만들어요.

<?php
    abstract class Car
    {
        //자식 클래스는 반드시 run()메소드를 만들어야 한다.
        abstract public function run();


        //아래의 메소드는 abstract가 없으므로 무관하다.
        public static function hello()
        {
            return '안녕? 나는 static 메소드야';
        }
    }

    class hello extends Car
    {
        public function disney()
        {
            return 'I Love Disney';
        }
    }

    $hello = new hello;
    echo $hello->disney();
?>

위의코드에서보면 부모 클래스는 추상 클래스이며 abstract를 사용해서 run()메소드를 자식클래스가 꼭 선언해야 하는 규칙을 만들었어요.
하지만 자식 클래스는 부모 클래스의 명령을 어기고 run()메소드를 선언하지 않아 다음과 같이 오류가 발생했어요. ㅜㅜ

위 코드의 결과

자 그러면 부모 클래스의 말을 들어서 자식 클래스가 run()메소드를 선언해 볼게요.

<?php
    abstract class Car
    {
        //자식 클래스는 반드시 run()메소드를 만들어야 한다.
        abstract public function run();


        //아래의 메소드는 abstract가 없으므로 무관하다.
        public static function hello()
        {
            return '안녕? 나는 static 메소드야';
        }
    }

    class hello extends Car
    {

        public function run()
        {
            return '미키마우스야 달려';
        }

        public function disney()
        {
            return 'I Love Disney';
        }
    }

    $hello = new hello;
    echo $hello->disney();
?>

위 코드는 자식클래스에서 run()메소드를 선언했어요. 이제 오류가 안나고 정상작동해요.
위 코드의 결과


추상클래스는 자식 클래스가 부모 클래스의 메소드를 호출할 수 있어요 다음의 코드처럼요.

<?php
    abstract class Car
    {
        //자식 클래스는 반드시 run()메소드를 만들어야 한다.
        abstract public function run();


        //아래의 메소드는 abstract가 없으므로 무관하다.
        public static function hello()
        {
            return '안녕? 나는 추상클래스의 메소드야';
        }
    }

    class hello extends Car
    {

        public function run()
        {
            return '미키마우스야 달려';
        }

        public function disney()
        {
            return 'I Love Disney';
        }
    }

    $hello = new hello;
    echo $hello->hello();
?>

위 코드의 결과

하지만,, 추상클래스의 인스턴스를 생성할 수는 없습니다.
다음은 추상클래스의 인스턴스를 생성하는 예제입니다. 오류가 발생하죠.

<?php
    abstract class Car
    {
        //자식 클래스는 반드시 run()메소드를 만들어야 한다.
        abstract public function run();


        //아래의 메소드는 abstract가 없으므로 무관하다.
        public static function hello()
        {
            return '안녕? 나는 추상클래스의 메소드야';
        }
    }

    class hello extends Car
    {

        public function run()
        {
            return '미키마우스야 달려';
        }

        public function disney()
        {
            return 'I Love Disney';
        }
    }

    $car = new Car;
?>

위 코드의 결과

이렇게 abstract 키워드의 사용방법에 대해서 알아봤어요. ^^

2019년 에버디벨이 제안하는 클라우드 개발환경(EEOS)이 드디어 오픈했습니다.
이제 개발환경구축없이 웹브라우저에서 웹개발하자
HTML5, CSS3, JavaScript를 넘어 MySQL, PHP까지
앞으로 지원 언어는 더 늘어날 예정 react, node, angular등
웹브라우저만 있다면 기기도 가리지 않아요. 이제 아이패드에서도 웹개발해요.!!
자기만의 클라우드 에디터, 저장공간, 데이터베이스, 접속 URL(eeosXXX.adjkl.com/eeos/)을 제공해요.
현재 웹코딩 시작하기와 PHP200 독자는 mybook(책과 관련된 기능 제공)에서 사용할 수 있습니다.

EEOS 신청하기 EEOS 알아보기

강좌로 돌아가기