<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>hary0_0.log</title>
        <link>https://velog.io/</link>
        <description>생각없이 쓰는 중</description>
        <lastBuildDate>Tue, 30 Jul 2024 08:52:31 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <image>
            <title>hary0_0.log</title>
            <url>https://velog.velcdn.com/images/hary0_0/profile/1675e8ad-00f1-4e85-89ff-50e5624833bc/image.jpg</url>
            <link>https://velog.io/</link>
        </image>
        <copyright>Copyright (C) 2019. hary0_0.log. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/hary0_0" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[0730]]></title>
            <link>https://velog.io/@hary0_0/0730</link>
            <guid>https://velog.io/@hary0_0/0730</guid>
            <pubDate>Tue, 30 Jul 2024 08:52:31 GMT</pubDate>
            <description><![CDATA[<h1 id="1-abstract">1. Abstract</h1>
<h2 id="1-정의">1) 정의</h2>
<h3 id="1-추상클래스">(1) 추상클래스</h3>
<p>📌 객체를 생성할 수 있는클래스 == 실체클래스</p>
<p>📌 이 클래스들의 공통적인 필드나 메소드를 추출해서 선언한 클래스 == 추상클래스</p>
<h3 id="2-사용법">(2) 사용법</h3>
<p>📌 public abstract void chage();</p>
<p>⇒  사용하지 않으니까 추상만 해둠</p>
<p>⇒ 밑에 Overrriding 해야한다</p>
<h1 id="2-interface">2. Interface</h1>
<h2 id="1-정의-1">1) 정의</h2>
<h3 id="1-다형성">(1) 다형성</h3>
<p>📌 상속을 통해 다형성을 구현할 수 있지만, interface를 이용해서 다형성을 구현하는 경우가 더 많다.</p>
<h3 id="2-왜-필요할까">(2) 왜 필요할까?</h3>
<p>📌 Pure abstract class에서 public abstract class 는 계속 abstract 즉, 계속 overriding해줘야 한다.</p>
<p>📌 interface를 하면 public ks { a(); b(); <del>~</del>}</p>
<p>📌 하나의 interface로 다양한 형변환이 가능하</p>
<h2 id="2-활용">2) 활용</h2>
<h3 id="1-선언방법">(1) 선언방법</h3>
<p>📌 <strong><em>public interface 인터페이스명 {    …     }</em></strong> //public 접근 제한</p>
<p>📌 중괄호 안에는 public 상수, 추장, 디폴트, 정적(), private method, static method 선언할 수 있다.</p>
<h3 id="2-구현방법">(2) 구현방법</h3>
<p>📌<strong><em>public class B implements 인터페이스명 {    …   }</em></strong></p>
<p>📌 인터페이스의 추상 메소드를 재정의한 메소드가 있다는 뜻(Override함)</p>
<h2 id="3-inteface가-나온-이유">3) inteface가 나온 이유?</h2>
<h3 id="1--예-1-소리키">(1)  예 1. 소리키</h3>
<p><img src="https://velog.velcdn.com/images/hary0_0/post/15ef0924-b05a-4b0d-93c4-33c788600d54/image.png" alt=""></p>
<p>⇒ 소리키는 소리나는 모든 물건에서 사용할 수 있다.</p>
<h3 id="2-나온-이유">(2) 나온 이유</h3>
<p>⇒ modeling시 기능 정의</p>
<p>⇒ Rule의 정의</p>
<h3 id="3-자바는-왜-다중상속을-금하는가">(3) 자바는 왜 다중상속을 금하는가?</h3>
<p><img src="https://velog.velcdn.com/images/hary0_0/post/38d3ce7f-31bf-4210-8994-89137ef1d4d8/image.png" alt=""></p>
<p>⇒ (1) name: A는 어떤 name인지 헷갈려한다</p>
<p>⇒ 10, 20 … 단계 이상이 되면 헷갈린다.</p>
<p>⇒ <strong><em>java 는 심플!!명확성!!!</em></strong></p>
<h3 id="4-그러나-다중상속-보완-가능하다">(4) 그러나 다중상속 보완 가능하다!</h3>
<p><img src="https://velog.velcdn.com/images/hary0_0/post/59b2a025-808c-414a-b3fd-e62f7b894837/image.png" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[헷갈림 모음(추가예정 ㅎ)]]></title>
            <link>https://velog.io/@hary0_0/%ED%97%B7%EA%B0%88%EB%A6%BC-%EB%AA%A8%EC%9D%8C</link>
            <guid>https://velog.io/@hary0_0/%ED%97%B7%EA%B0%88%EB%A6%BC-%EB%AA%A8%EC%9D%8C</guid>
            <pubDate>Mon, 29 Jul 2024 15:52:22 GMT</pubDate>
            <description><![CDATA[<h2 id="1-arraylist">1. ArrayList</h2>
<p>✨ import java.util.ArrayList;</p>
<p>✨ ArrayList al = new ArrayList();</p>
<pre><code>→  ArrayList instance 를 al로 담음</code></pre><p> ✨ al.add(&quot;one&quot;); 추가 방식</p>
<pre><code>→  arrayObj[0] = &quot;one&quot;;와 같음</code></pre><p>✨ al.get(i)</p>
<p>✨주의점</p>
<pre><code>⇒ 문자열임

⇒ String value = al.get(i);

  Sysout(value);  오류난다</code></pre><p>왜? .add(object type) 인데 value에 object를 담으려고 하는데 String으로 지정함.</p>
<p>✨해결 1 ⇒ get을 통해 리턴되는 값을 String type으로 형 변환을 해줘야 함</p>
<pre><code>String value = (String) al.get(i);</code></pre><p>✨해결 2 ⇒  ArrayList<String> al = new                         ArrayList<String>();</p>
<p>이렇게 하면 String형변환 안 해줘도 된다.(제네릭 참고)</p>
<h2 id="2-gettetsetter">2. Gettet/Setter</h2>
<p>  사용 이유: 
  -&gt; OOP에서 외부 직접접근을 막는다. 
  -&gt; 자바는 method를 통해 데이터를 변경하는 방법을 선호</p>
<p> ** 에브리데이 쌈@뽕하게 Error천국인 이유**
⇒ getter에 void 씀, return까먹음</p>
<p>⇒ setter에 void(리턴타입)안씀 </p>
<p>⇒ get대문자, set대문자</p>
<p>✨*<em>만약 boolean일 경우
*</em>
getter → public boolean isStop(){return stop;} ⇒ is필드</p>
<p>setter → 그대로</p>
<p>get set 참고: <a href="https://kephilab.tistory.com/54">https://kephilab.tistory.com/54</a></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[JAVA_Static, Final, System.out.println();]]></title>
            <link>https://velog.io/@hary0_0/JAVAStatic-Final-System.out.println</link>
            <guid>https://velog.io/@hary0_0/JAVAStatic-Final-System.out.println</guid>
            <pubDate>Mon, 29 Jul 2024 15:43:17 GMT</pubDate>
            <description><![CDATA[<p>Static, Final, System.out.println();
20240729수업</p>
<h1 id="1static">1.Static</h1>
<h4 id="1-object">1) object</h4>
<p>📌 객체는 서로 다른 상태를 가지고 있다.</p>
<pre><code>⇒ 남자학교 학생 모델링

    →sorting: 학생, 성적, 학번

    → Student a = new Student(); Student b … 300명이 있다면?

    → 이 객체들은 서로 다른 상태를 가지고 있다(학번, 학년 등)

→ 하지만!! 같은 것이 있다. 바로 “남성”이라는 성별이다.</code></pre><p>여기서 의문점. 객체에 위배되는 것이 아닌가? 서로 다른 상태를 가져야 하는데, 성별이 같은 상태다.</p>
<p>이런 것을 해결하기 위해 static을 살펴볼 것이다.</p>
<h4 id="2-static">2) static</h4>
<p>(1) 상태긴 상태인데 “같은” 상태</p>
<p>📌 객체지향 대명제: constructor OverLoading, 객체는 서로 다른 상태를 가지고 있음</p>
<p>📌 why? 같은 상태 존재</p>
<p>📌 static 선언</p>
<p>(2) 실행</p>
<pre><code>-&gt; java를 실행하면 처음부터 Scanning한다

① static을 찾아 내려온다

② main부터 읽었던 이유는 public static void main에 static이 있었기 때문</code></pre><p> (3) Static Method
 📌 Method: 행위는 반드시 상태를 건든다</p>
<p>  ① abs</p>
<pre><code>⇒ 상태 안건들임

⇒ 상태와 무관한 행위

→ Static 놓는다</code></pre><p>  ② Integer.perseInt(”5”);</p>
<pre><code>⇒ class는 static접근

⇒ 단순 function → static 그냥 접근 가능</code></pre><p>  ③ math.random()</p>
<pre><code>⇒static method</code></pre><h1 id="2-final">2. Final</h1>
<h4 id="1-설명">1) 설명</h4>
<p>📌 선언된 대상 변경 금지</p>
<h3 id="2-field">2) Field</h3>
<p>📌 마지막 상태값으로 건들지 말아라!</p>
<h3 id="3-method">3) Method</h3>
<p>📌 마음대로 바꾸지 말아라. 가져다 써라!</p>
<p>📌 즉, 하위 클래스에서 overriding 금지!!</p>
<h3 id="4-class">4) Class</h3>
<p>📌 상속금지!</p>
<p>📌 ex) String class는 final로 선언되어있다</p>
<h3 id="5-왜-필요할까">5) 왜 필요할까?</h3>
<p>📌 double PI = 3.14<del>~</del>정해진 값이다. 바뀌면 안되는 값이기도 하다.</p>
<p>⇒ public 이라서 편하게 가져다 사용해라~</p>
<p>⇒ 근데 public static fainal 이야!</p>
<p>⇒ object 모델링을 해서 상태값이 바뀌면 안된다!</p>
<p><strong>여기서 알고갈 것!</strong></p>
<p>⇒ 상수는 변수 이름이 대문자다! (→ PI)</p>
<h1 id="3-syetemoutprintln">3. Syetem.out.println();</h1>
<h4 id="1-system-class">1) System: class</h4>
<p>📌 UpperCamelCase</p>
<h4 id="2-out-field">2) .out: Field</h4>
<p>📌 (  ) 없음 → public 누구나 접근</p>
<p>📌 System class의 Field</p>
<p>📌 .(dot)을 통해 class의 attribute에 접근</p>
<h4 id="3-println">3) .println()</h4>
<p>📌 Data type ⇒ PrintStream(PrintStream class의 instance method)</p>
<p>📌 (  ) ⇒ overLoading, “1” → 1, “1.0” → 1.0, “홍” → 홍</p>
<h4 id="4-정리">4) 정리</h4>
<p>📌 System class는 PrintStream class type의 Field를 가진다(==out)</p>
<p>📌 static 으로 선언되어 있다. → 어디서든 System.out으로 호출가능하다</p>
<p>📌 println()은 overLoading. (   ) → 매개변수 개수 &amp; type 다름</p>
<p>이상 오늘도 열심히 노는 꼬질토리
<img src="https://velog.velcdn.com/images/hary0_0/post/388b74b0-1168-4ddb-8c8b-6ac5045efeac/image.jpg" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[토리야........]]></title>
            <link>https://velog.io/@hary0_0/%ED%86%A0%EB%A6%AC%EC%95%BC</link>
            <guid>https://velog.io/@hary0_0/%ED%86%A0%EB%A6%AC%EC%95%BC</guid>
            <pubDate>Mon, 29 Jul 2024 04:36:54 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/hary0_0/post/56540087-b16c-4452-91e2-8332f80bb8d9/image.jpg" alt=""></p>
]]></description>
        </item>
    </channel>
</rss>