<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>kiki97-dev.log</title>
        <link>https://velog.io/</link>
        <description>공부한것들 정리하는 블로그</description>
        <lastBuildDate>Wed, 27 Jul 2022 11:13:07 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <image>
            <title>kiki97-dev.log</title>
            <url>https://velog.velcdn.com/images/kiki97-dev/profile/a06df23d-43db-47ad-a9a3-46d6fcb067c9/social_profile.png</url>
            <link>https://velog.io/</link>
        </image>
        <copyright>Copyright (C) 2019. kiki97-dev.log. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/kiki97-dev" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[SQL JOIN]]></title>
            <link>https://velog.io/@kiki97-dev/SQL-JOIN</link>
            <guid>https://velog.io/@kiki97-dev/SQL-JOIN</guid>
            <pubDate>Wed, 27 Jul 2022 11:13:07 GMT</pubDate>
            <description><![CDATA[<h1 id="join이란">JOIN이란?</h1>
<blockquote>
<p>두개 이상의 테이블을 결합하여 나타낼 때 사용한다.
두 테이블의 조인을 위해서는 기본키(PK)와 외래키(FK) 관계로 맺어져야 하고, 이를 일대다 관계라고 한다.</p>
</blockquote>
<hr>
<h3 id="inner-join-내부조인">INNER JOIN (내부조인)</h3>
<p>조인 조건에 맞는 행만 포함하는 조인. 대부분이 이 조인이다.
두 테이블에 모두 지정한 열의 데이터가 있어야 한다.</p>
<pre><code class="language-sql">--oracle
SELECT 조회할 컬럼
FROM 테이블1, 테이블2
[WHERE 조건문]


--ansi
SELECT 조회할 컬럼
FROM 테이블1
(INNER) JOIN 테이블2
ON 테이블1.컬럼 = 테이블2.컬럼
[WHERE 추가조건]</code></pre>
<hr>
<h3 id="outer-join외부-조인">OUTER JOIN(외부 조인)</h3>
<p>조인 조건에 만족하지 못한 행도 출력하는 조인
두 테이블을 조인할 때, 1개의 테이블에만 데이터가 있어도 결과가 나온다.</p>
<p><strong>LEFT JOIN</strong>
왼쪽 테이블의 모든 값이 출력되는 조인</p>
<pre><code class="language-sql">SELECT 조회할 컬럼
FROM 기준테이블1 
LEFT OUTER JOIN 테이블2
ON 조건문
[WHERE 추가조건문]</code></pre>
<p><strong>RIGHT JOIN</strong>
오른쪽 테이블의 모든 값이 출력되는 조인</p>
<pre><code class="language-sql">SELECT 조회할 컬럼
FROM 테이블1 
RIGHT OUTER JOIN 기준테이블2
ON 조건문
[WHERE 추가조건문]</code></pre>
<p><strong>Full OUTER JOIN</strong>
왼쪽 또는 오른쪽 테이블의 모든 값이 출력되는 조인</p>
<pre><code class="language-sql">SELECT 조회할 컬럼
FROM 테이블1 
FULL OUTER JOIN 테이블2
ON 조건문
[WHERE 추가조건문]</code></pre>
<p><strong>Oracle OUTER JOIN</strong></p>
<pre><code class="language-sql">SELECT c.cus_name &quot;고객명&quot;, 
       c.tel_num &quot;고객전화번호&quot;, 
       e.emp_name &quot;담당직원명&quot;, 
       e.jikup &quot;담당직원직급&quot; 
FROM customer c, 
     employee e 
WHERE c.emp_no = e.emp_no(+); 
--(+)가 붙은 컬럼의 반대편 컬럼의 소속 테이블 행은 모두 나옴
--여러 테이블을 할 시 엮이지 않은 테이블에 (+) 붙여주면됨</code></pre>
<hr>
<h3 id="cross-join상호-조인">CROSS JOIN(상호 조인)</h3>
<p>2개 이상 테이블에서 각각의 행이 모두 연결되는 조인
곱집합 두 테이블 데이터의 모든 조합</p>
<pre><code class="language-sql">1)
SELECT 조회할컬럼
FROM 테이블1, 테이블2

2)
SELECT 조회할컬럼
FROM 테이블1
JOIN 테이블2

3)
SELECT 조회할컬럼
FROM 테이블1
CROSS JOIN 테이블2</code></pre>
<hr>
<h3 id="self-join자체-조인">SELF JOIN(자체 조인)</h3>
<p>자신이 자신과 조인한다는 의미로, 1개의 테이블을 사용한다.</p>
<pre><code class="language-sql"> SELECT 컬럼명
 FROM 테이블1 별칭A
          INNER JOIN 테이블2 별칭B
          ON &lt;조인될 조건&gt;
 [WHERE 검색 조건]</code></pre>
]]></description>
        </item>
        <item>
            <title><![CDATA[SQL 개념,종류,특징]]></title>
            <link>https://velog.io/@kiki97-dev/SQL-%EA%B0%9C%EB%85%90%EA%B3%BC-%EC%A2%85%EB%A5%98</link>
            <guid>https://velog.io/@kiki97-dev/SQL-%EA%B0%9C%EB%85%90%EA%B3%BC-%EC%A2%85%EB%A5%98</guid>
            <pubDate>Fri, 15 Jul 2022 11:06:29 GMT</pubDate>
            <description><![CDATA[<h2 id="sqlstructured-query-language이란">SQL(Structured Query Language)이란?</h2>
<blockquote>
<p>관계형 데이터베이스 시스템(RDBMS)에서 자료를 관리 및 처리하기 위해 설계된 언어이다.
현재 SQL의 표준으로 ANSI SQL이 정립되어있다.</p>
</blockquote>
<hr>
<h2 id="sql의-종류">SQL의 종류</h2>
<h3 id="1-데이터-정의어-ddl-ddl-data-definition-language">1) 데이터 정의어 DDL (DDL, Data Definition Language)</h3>
<p>데이터베이스, 테이블의 스키마를 정의, 수정, 삭제하는 명령어</p>
<table>
<thead>
<tr>
<th align="center">SQL문</th>
<th align="left">내용</th>
</tr>
</thead>
<tbody><tr>
<td align="center">CREATE</td>
<td align="left">데이터베이스 객체 생성</td>
</tr>
<tr>
<td align="center">DROP</td>
<td align="left">데이터베이스 객체 삭제</td>
</tr>
<tr>
<td align="center">ALTER</td>
<td align="left">기존에 존재하는 데이터베이스 객체를 다시 정의</td>
</tr>
</tbody></table>
<h3 id="2-데이터-조작어-dmldata-manipulation-language">2) 데이터 조작어 DML(Data Manipulation Language)</h3>
<p>테이블의 데이터를 조작하는 명령어</p>
<table>
<thead>
<tr>
<th align="center">SQL문</th>
<th align="center">내용</th>
</tr>
</thead>
<tbody><tr>
<td align="center">INSERT</td>
<td align="center">데이터 삽입</td>
</tr>
<tr>
<td align="center">DELETE</td>
<td align="center">데이터 삭제</td>
</tr>
<tr>
<td align="center">UPDATE</td>
<td align="center">데이터 수정</td>
</tr>
<tr>
<td align="center">SELECT</td>
<td align="center">데이터 조회</td>
</tr>
</tbody></table>
<h3 id="3-데이터-제어어-dcldata-control-language">3) 데이터 제어어 DCL(Data Control Language)</h3>
<p>데이터베이스, 테이블의 접근권한이나 CRUD권한을 정의하는 명령어</p>
<table>
<thead>
<tr>
<th align="center">SQL문</th>
<th align="center">내용</th>
</tr>
</thead>
<tbody><tr>
<td align="center">GRANT</td>
<td align="center">데이터베이스 객체에 권한을 부여</td>
</tr>
<tr>
<td align="center">REVOKE</td>
<td align="center">이미 부여된 데이터베이스 객체 권한을 취소</td>
</tr>
</tbody></table>
<hr>
<h2 id="sql-언어적-특성">SQL 언어적 특성</h2>
<blockquote>
<ol>
<li>대소문자를 가리지 않는다.</li>
<li>SQL명령은 반드시 세미콜론(;)으로 끝나야 한다.</li>
<li>고유의 값은 따옴표(&#39;&#39;)로 감싸준다.</li>
<li>SQL에서 객체를 나타낼 때는 백틱(``)으로 감싸준다.</li>
</ol>
</blockquote>
]]></description>
        </item>
        <item>
            <title><![CDATA[오라클 집합연산자 UNION, UNION ALL]]></title>
            <link>https://velog.io/@kiki97-dev/%EC%98%A4%EB%9D%BC%ED%81%B4-%EC%A7%91%ED%95%A9%EC%97%B0%EC%82%B0%EC%9E%90-UNION-UNION-ALL</link>
            <guid>https://velog.io/@kiki97-dev/%EC%98%A4%EB%9D%BC%ED%81%B4-%EC%A7%91%ED%95%A9%EC%97%B0%EC%82%B0%EC%9E%90-UNION-UNION-ALL</guid>
            <pubDate>Thu, 14 Jul 2022 18:53:21 GMT</pubDate>
            <description><![CDATA[<h3 id="사용목적">사용목적</h3>
<ul>
<li>조회한 다수의 SELECT 문을 하나로 합치고 싶을때</li>
</ul>
<h3 id="union">UNION</h3>
<ol>
<li>두개 이상의 테이블의 결합을 나타냄</li>
<li>중복되는 행은 제거하고 정렬되어 출력됨<pre><code class="language-sql">SELECT - FROM a
UNION
SELECT * FROM b</code></pre>
</li>
</ol>
<ul>
<li>컬럼이 두개 이상이면 묶음으로 확인해서 중복제거함 
즉, 행의 데이터가 다 같아야지 중복제거</li>
<li>컬럼명은 첫번째로 명시된 컬럼명을 따라감</li>
</ul>
<h3 id="union-all">UNION ALL</h3>
<ol>
<li><code>UNION</code> 과 같으며 중복을 제거하지 않음, 정렬되어 출력안됨<pre><code class="language-sql">SELECT - FROM a
UNION ALL
SELECT * FROM b</code></pre>
</li>
</ol>
<ul>
<li>정렬을 할 시 마지막으로 명시한 <code>SELECT</code>문의 다음에 <code>ORDER BY</code>를 해야한다.</li>
</ul>
<h3 id="사용시-주의점">사용시 주의점</h3>
<ol>
<li>컬럼의 타입과 순서 그리고 컬럼의 개수가 동일해야한다.</li>
<li><code>ORDER BY</code> 사용시 첫번째로 명시된 <code>SELECT</code> 문의 컬럼명 혹은 ALIAS로 작성해야한다.</li>
</ol>
]]></description>
        </item>
        <item>
            <title><![CDATA[오라클 CURD]]></title>
            <link>https://velog.io/@kiki97-dev/%EC%98%A4%EB%9D%BC%ED%81%B4-CURD</link>
            <guid>https://velog.io/@kiki97-dev/%EC%98%A4%EB%9D%BC%ED%81%B4-CURD</guid>
            <pubDate>Mon, 11 Jul 2022 18:45:49 GMT</pubDate>
            <description><![CDATA[<h3 id="테이블생성">테이블생성</h3>
<pre><code class="language-sql">CREATE TABLE DEPT(
    컬럼명 자료형 제약조건
    DEP_NO NUMBER,
    DEP_NAME VARCHAR2(30) NOT NULL UNIQUE,
    LOC VARCHAR2(3) NOT NULL,
    CONSTRAINT PK_NAME PRIMARY KEY(DEP_NO)
);</code></pre>
<h3 id="테이블-수정">테이블 수정</h3>
<pre><code class="language-sql">ALTER TABLE TOPIC ADD PRIMARY KEY(TOPIC_NO); --제약조건 추가

ALTER TABLE emp RENAME COLUMN editid TO edit_id; -- 컬럼명 변경

ALTER TABLE EMPLOYEE MODIFY EMP_NAME NOT NULL; --데이터타입,길이변경</code></pre>
<hr>
<h3 id="행-입력하기">행 입력하기</h3>
<pre><code class="language-sql">INSERT INTO 테이블명 
(컬럼1, 컬럼2, 컬럼3) 

VALUES 
(값1, 값2, 값3)

--테이블에 있는 컬럼에 순서대로전부 값을 입력하면 컬럼명은 생략이 가능하다.
INSERT INTO 테이블명 

VALUES 
(값1, 값2, 값3)

--날짜데이터는 들어갈때 날짜데이터타입으로 바꿔줘야한다.
INSERT INTO 테이블명(컬럼명) VALUES(TO_DATE(&#39;19970808&#39;,&#39;YYYYMMDD&#39;));
</code></pre>
<h3 id="행-읽기">행 읽기</h3>
<pre><code class="language-sql">SELECT * FROM 테이블명 WHERE 조건식 ORDER BY 컬럼명 [ASC|DESC]

SELECT 내가보고싶은정보 AS &quot;별칭&quot;
FROM 어디테이블에서?
WHERE 조건식을 걸어 꺼내고싶은 부분만
ORDER BY 정렬상태 바꾸기

&lt;주의&gt; WHERE절과 ORDER BY가 같이 있으면 WHERE절이 먼저와야한다.
ASC : 작은숫자가먼저(오름차순,생략가능) , DESC : 큰숫자가먼저(내림차순)

이중정렬
ORDER BY 이후에 SORT 하고 싶은 컬럼명을 왼쪽부터 순서대로 콤마 다음으로 나열해주면 된다.
SELECT * FROM EMPLOYEE ORDER BY DEP_NO ASC, SALARY DESC;
</code></pre>
<h3 id="행-수정">행 수정</h3>
<pre><code class="language-sql">UPDATE 테이블명 SET 수정할컬럼명 = &#39;데이터&#39; WHERE ID=3;
업데이트에서는 WHERE절이 꼭있어야한다. 수정이 끝나고 COMMIT해야지 반영됨</code></pre>
<h3 id="행-삭제">행 삭제</h3>
<pre><code class="language-sql">DELETE FROM TOPIC WHERE ID=3;</code></pre>
]]></description>
        </item>
        <item>
            <title><![CDATA[오라클 TABLE, 자료형, 제약조건]]></title>
            <link>https://velog.io/@kiki97-dev/%EC%98%A4%EB%9D%BC%ED%81%B4-TABLE-%EC%9E%90%EB%A3%8C%ED%98%95-%EC%A0%9C%EC%95%BD%EC%A1%B0%EA%B1%B4</link>
            <guid>https://velog.io/@kiki97-dev/%EC%98%A4%EB%9D%BC%ED%81%B4-TABLE-%EC%9E%90%EB%A3%8C%ED%98%95-%EC%A0%9C%EC%95%BD%EC%A1%B0%EA%B1%B4</guid>
            <pubDate>Mon, 11 Jul 2022 17:33:56 GMT</pubDate>
            <description><![CDATA[<h2 id="테이블table이란">테이블(TABLE)이란?</h2>
<ol>
<li>관계형데이터베이스에서 데이터가 실질적으로 저장되는 장소를 말한다.</li>
<li>테이블은 이름을 가지고 저장되는 객체의 한 종류이다.<pre><code class="language-sql">CREATE TABLE 테이블명(
 컬럼명 자료형 제약조건
 emp_no number not null
);</code></pre>
</li>
</ol>
<ul>
<li>컬럼명은 중복될 수 없다.</li>
</ul>
<hr>
<h2 id="자료형">자료형</h2>
<p>테이블컬럼에 입력되는 데이터의 유형을 말한다. 문자형, 숫자형, 날짜형 등이 있다.</p>
<h3 id="문자-데이터타입">문자 데이터타입</h3>
<pre><code class="language-sql">CHAR(N) : 고정형 문자열을 저장하고 N은 byte수를 의미하고 최대크기는 2000byte이다.
설정한 크기보다 입력 문자 크기가 작으면 공백으로 남는다.
&lt;예&gt; CHAR(4)는 문자4byte 까지 입력가능하다. 즉 영문4개, 한글2개까지 가능

VARCHAR2(N) : 가변길이 문자열을 저장하고 N은 byte수를 의미하고 최대크기는 4000byte이다.
설정 크기보다 입력 문자크기가 작으면 크기가 자동으로 줄어든다. 마찬가지로 크면 입력되지않음.</code></pre>
<h3 id="숫자형-데이터타입">숫자형 데이터타입</h3>
<pre><code class="language-sql">NUMBER(P,S) 가변길이 숫자 저장, P는 전체자리수 1~38, S는 소수점이하 자리수(-84~127) 최대22byte
P와 S를 입력하지 않으면 가변숫자 이므로 저장데이터의 크기에 맞게 자동조절</code></pre>
<h3 id="날짜-데이터타입">날짜 데이터타입</h3>
<pre><code class="language-sql">DATE : [년, 월, 일, 시, 분, 초] 날짜 및 시간을 저장한다.
저장 범위는 BC 4712년 1월 1일 ~ 9999년 12월 31일.</code></pre>
<hr>
<h2 id="제약조건">제약조건</h2>
<p>입력되는 데이터의 입력, 수정 가능조건을 말한다. 
제약조건에 위배될 경우 입력, 수정이 불가능하다.
입력의 경우 행 자체가 입력이 안되고 수정의 경우 셀 수정이 안된다.</p>
<pre><code class="language-sql">NOT NULL : NULL과 공백문자열 허용X, 즉 반드시 데이터 입력

UNIQUE : 중복된 데이터를 값으로 가질 수 없다.
NULL값은 예외적으로 여러 개 입력 가능하다.

DEFAULT : 데이터를 입력하지 않으면 디폴트로 설정한 값이 입력된다.

CHECK : 지정한 데이터만 입력 가능하다. 입력되는값이 미리 지정한 조건에 맞지 않으면 오류 반환
특정값이나 범위를 지정해주면 해당 안에 입력 값이 맞는지 확인

PRIMARY KEY(PK/기본키) : 테이블당 하나만 가질 수 있는 키
NOT NULL, UNIQUE 성질을 가지고있다. 비지마! 중복마!
차후에 FOREIGN KEY에 의해 참조 당할 수 있다.

FOREIGN KEY(FK/외래키) : PRIMARY KEY에 존재하는 데이터만 삽입 될 수 있다.
PRIMARY KEY를 참조하는 KEY다. 하나의 테이블에 0~N개까지 사용가능.
&lt;주의&gt; 예외적으로 NULL값이 입력 가능하다. 즉, 데이터가 입력되지 않을 수 있다.</code></pre>
<hr>
<h3 id="테이블명-칼럼명-제작-규칙">테이블명, 칼럼명 제작 규칙</h3>
<ol>
<li>영문자, 1~9, $, #, _ 로 구성되고 <strong>반드시 영문자로 시작</strong>해야 한다. (0은안됨)</li>
<li>30자를 초과할 수 없다. </li>
<li>SQL 예약어는 사용할 수 없다.</li>
<li>하나의 계정이 만든 테이블명은 유일해야하고 하나의 테이블 안에서 컬럼명은 유일해야한다.</li>
<li>테이블명, 컬럼명, 제약조건명을 &quot;&quot;로 감싸거나 생략해서 써도 된다.</li>
</ol>
]]></description>
        </item>
        <item>
            <title><![CDATA[오라클 (Oracle)이란?]]></title>
            <link>https://velog.io/@kiki97-dev/%EC%98%A4%EB%9D%BC%ED%81%B4-Oracle%EC%9D%B4%EB%9E%80</link>
            <guid>https://velog.io/@kiki97-dev/%EC%98%A4%EB%9D%BC%ED%81%B4-Oracle%EC%9D%B4%EB%9E%80</guid>
            <pubDate>Mon, 11 Jul 2022 16:37:22 GMT</pubDate>
            <description><![CDATA[<h1 id="오라클이란">오라클이란?</h1>
<p>오라클은 관계형 데이터베이스의 한 종류이다.</p>
<hr>
<h2 id="데이터베이스">데이터베이스</h2>
<blockquote>
<p><strong>검색</strong>에 용이하도록 일정한 기준에 맞춰 자료를 분류하여 
정리해 놓은 자료의 집합을 말한다.</p>
</blockquote>
<h3 id="curd--create-read-update-delete-">CURD ( Create, Read, Update, Delete )</h3>
<p>데이터베이스의 본질은 <strong>입력과 출력이다.</strong> ( input / output )
입력 input : 생성, 수정, 삭제 /  출력 output : 조회</p>
<hr>
<h3 id="rdbms-관계형데이터베이스">RDBMS (관계형데이터베이스)</h3>
<blockquote>
<p><strong>Relation Database Management System</strong>
관계형데이터 베이스의 핵심은 *<em>표 *</em>이다.
데이터가 X,Y축 행과열로 이루어진 2차원 표에 저장된다.
오라클은 관계형 데이터베이스다.</p>
</blockquote>
<h3 id="sql-structured-query-language란">SQL (Structured Query Language)란?</h3>
<blockquote>
<p>데이터의 입력, 수정, 삭제, 검색 하는 등의 기능을 가진 RDMS관리 언어이다.
DB와 소통하기위한 컴퓨터 언어이고 전달된 명령을 쿼리(Query)라고 한다.
&lt;참고&gt; DB, 즉 오라클을 배운다라는 말은 SQL 언어를 배우는 것과 동일하다.</p>
</blockquote>
<ul>
<li>SQL은 절차식 언어가 아닌 구조적 언어이다.<blockquote>
<p><strong>절차적언어</strong><br>모든 처리 과정을 일일이 기술하고 기술된 순서대로 로직이 처리되는 언어 
(C, Java 등)<br>
<strong>구조적언어</strong> 
처리 과정을 일일이 기술할 필요 없이 일정한 틀이나 패턴이 있어 
맞게 조건들만 나열하면 로직이 처리되는 언어.</p>
</blockquote>
</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[Java 인터페이스(interface)]]></title>
            <link>https://velog.io/@kiki97-dev/Java-%EC%9D%B8%ED%84%B0%ED%8E%98%EC%9D%B4%EC%8A%A4</link>
            <guid>https://velog.io/@kiki97-dev/Java-%EC%9D%B8%ED%84%B0%ED%8E%98%EC%9D%B4%EC%8A%A4</guid>
            <pubDate>Fri, 17 Jun 2022 13:04:33 GMT</pubDate>
            <description><![CDATA[<h2 id="인터페이스interface란">인터페이스(interface)란?</h2>
<p>추상 메소드와 상수만 들어있는 기본 설계도</p>
<hr>
<h3 id="인터페이스의-역할">인터페이스의 역할</h3>
<ul>
<li>객체를 어떻게 구성해야 하는지 정리한 설계도</li>
<li>객체의 교환성(또는 다형성)을 높여준다.</li>
<li>구현 객체를 직접 몰라도 인터페이스 메서드만 알면 객체 호출이 가능하다.</li>
<li>객체가 인터페이스를 사용하면, 인터페이스 메서드를 반드시 구현해야 하는 제약을 건다.</li>
</ul>
<hr>
<h3 id="인터페이스-선언">인터페이스 선언</h3>
<p>인터페이스의 모든 필드는 <code>public static final</code> 이어야 한다.
모든 메소드는 <code>public abstract</code> 이어야 하고 <strong>생략 가능</strong>하며 생략한다면 
<strong>컴파일러가 자동</strong>으로 붙여준다.</p>
<pre><code class="language-java">접근제어자 interface 인터페이스이름 {

    public static final 타입 상수이름 = 값; // 반드시 초기화 해야한다.
    // 상수의 네이밍은 모두 대문자로 구성되고 구분자는 &quot;_&quot;(언더바)로 표한한다.
    public static final String FIRST_NAME = &quot;Ryan&quot;;
    ...

    public abstract 메소드이름(매개변수목록);

    ...

}</code></pre>
<ul>
<li>인터페이스는 객체로 생성할 수 없기 때문에, 생성자를 가질 수 없다.</li>
</ul>
<hr>
<h3 id="인터페이스의-구현">인터페이스의 구현</h3>
<p>클래스가 인터페이스로부터 <strong>메소드를 물려받아 실행구문을 붙여 재정의</strong>하는 행위</p>
<p>자신이 <strong>직접 인스턴스를 생성할 수 없고</strong>, <strong>구현해 줄 클래스</strong>를 작성해야한다.
또한 클래스가 <strong>모든 추상메소드를 구현하지</strong> 않는다면, <code>abstract</code> 키워드를 사용하여 
<strong>추상 클래스로 선언</strong>해야한다.</p>
<pre><code class="language-java">class 클래스이름 implements 인터페이스이름 { ... }</code></pre>
<ul>
<li>1개의 클래스가 여러개의 인터페이스를 구현할 수 있다.</li>
</ul>
<hr>
<h3 id="인터페이스의-상속">인터페이스의 상속</h3>
<p>인터페이스가 <strong>다른 인터페이스에게 멤버변수와 메소드를 물려주는 행위</strong></p>
<p>인터페이스는 <strong>인터페이스로부터만 상속</strong>을 받을 수 있으며, 
<strong>여러 인터페이스를 상속</strong>받을 수 있다.</p>
<blockquote>
<h4 id="클래스는-다중상속이-안되나요">클래스는 다중상속이 안되나요?</h4>
<p>클래스를 이용하여 <strong>다중상속을할때 메소드의 이름이 겹칠경우 출처의 모호성</strong> 등의 
문제가 발생 할 수 있어 자바에서는 <strong>클래스를 통한 다중 상속은 지원하지 않는다.</strong></p>
</blockquote>
<h4 id="자바에서는-상속과-구현을-동시에-할-수-있다">자바에서는 상속과 구현을 동시에 할 수 있다.</h4>
<pre><code>class 클래스이름 extend 상위클래스이름 implements 인터페이스이름 { ... }</code></pre><h4 id="인터페이스-다중-상속시-변수명이-겹치는경우">인터페이스 다중 상속시 변수명이 겹치는경우</h4>
<p>클래스 입장에서 <strong>변수명이 겹치는경우</strong> 누구의 것인지 알 수 없기 때문에 
앞에 <strong>누구의 것인지 명시</strong>해줘야한다. <code>인터페이스명.변수명</code></p>
<hr>
<h3 id="인터페이스의-장점">인터페이스의 장점</h3>
<ol>
<li><p>대규모 프로젝트 개발 시 일관되고 정형화된 개발을 위한 <strong>표준화가 가능</strong></p>
</li>
<li><p>클래스의 작성과 인터페이스의 구현을 동시에 진행할 수 있으므로, </p>
</li>
</ol>
<p><strong>개발 시간을 단축</strong>할 수 있다.</p>
<ol start="3">
<li>클래스와 클래스 간의 관계를 인터페이스로 연결하면,</li>
</ol>
<p><strong>클래스마다 독립적인 프로그래밍</strong>이 가능
4. 프로젝트 전체의 메소드 호출 규격을 만들어 유지 보수성을 높일 수 있다.</p>
]]></description>
        </item>
    </channel>
</rss>