<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>wusi_univ.log</title>
        <link>https://velog.io/</link>
        <description>Let's start to Coding</description>
        <lastBuildDate>Sun, 27 Feb 2022 05:08:49 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <copyright>Copyright (C) 2019. wusi_univ.log. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/wusi_univ" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[Java100 Part.5 - 배열 내 숫자들의 빈도 수를 출력하는 코드]]></title>
            <link>https://velog.io/@wusi_univ/Java100-Part.5-%EB%B0%B0%EC%97%B4-%EB%82%B4-%EC%88%AB%EC%9E%90%EB%93%A4%EC%9D%98-%EB%B9%88%EB%8F%84-%EC%88%98%EB%A5%BC-%EC%B6%9C%EB%A0%A5%ED%95%98%EB%8A%94-%EC%BD%94%EB%93%9C</link>
            <guid>https://velog.io/@wusi_univ/Java100-Part.5-%EB%B0%B0%EC%97%B4-%EB%82%B4-%EC%88%AB%EC%9E%90%EB%93%A4%EC%9D%98-%EB%B9%88%EB%8F%84-%EC%88%98%EB%A5%BC-%EC%B6%9C%EB%A0%A5%ED%95%98%EB%8A%94-%EC%BD%94%EB%93%9C</guid>
            <pubDate>Sun, 27 Feb 2022 05:08:49 GMT</pubDate>
            <description><![CDATA[<pre><code>public class ex100_1 {
        public static void main(String[] args) {

            //[1]: 배열 선언
            int[] target = {1,3,3,2,1,1,3,0,1,2};

            //[2]: 배열 내 각 숫자들의 빈도 수 출력하기
            // 1 --&gt; 빈 정수형 배열(ar)을 하나 만들어놓고 초기값은 모두 0으로 세팅한다.
            // 2 --&gt; target배열 내 숫자가 빈 배열(ar)의 인덱스로 적용되서 해당 인덱스의 ar배열 요소의 값을 1씩 증가시킨다.
            // 3 --&gt; 이때, 빈 배열(ar)의 요소 개수는 target 배열 내 숫자들의 종류 만큼 지정한다.
            int[] ar = new int[4];

            for(int i=0; i&lt;target.length;i++)
                ar[target[i]]++;

            //[3]: 출력
            for(int i=0; i&lt;ar.length; i++)
                System.out.println(i+&quot;번 숫자 --&gt; &quot;+ar[i]+&quot;회&quot;);
        }
    }</code></pre>]]></description>
        </item>
        <item>
            <title><![CDATA[Java100 Part.4 - 성적 배열 (오름차순 정렬)]]></title>
            <link>https://velog.io/@wusi_univ/Java100-Part.4-%EC%84%B1%EC%A0%81-%EB%B0%B0%EC%97%B4-%EC%98%A4%EB%A6%84%EC%B0%A8%EC%88%9C-%EC%A0%95%EB%A0%AC</link>
            <guid>https://velog.io/@wusi_univ/Java100-Part.4-%EC%84%B1%EC%A0%81-%EB%B0%B0%EC%97%B4-%EC%98%A4%EB%A6%84%EC%B0%A8%EC%88%9C-%EC%A0%95%EB%A0%AC</guid>
            <pubDate>Thu, 24 Feb 2022 22:34:38 GMT</pubDate>
            <description><![CDATA[<pre><code>import java.util.Arrays;

public class ex100_1 {
    public static void printRanking(int[] scores, int[] ranking) {
        // 배열 길이
        int scores_len = scores.length;


        System.out.println(&quot;총&quot;+scores_len+&quot;명 학생의 성적과 등수는?&quot;);
        for(int i=0; i&lt;scores_len;i++)
            System.out.println(scores[i]+&quot;점 --&gt;&quot;+ranking[i]+&quot;등&quot;);
        System.out.println();
    }


    public static void main(String[] args) {

        // [1]: 배열 선언 --&gt; 성적 배열, 랭킹 배열 2가지
        int[] scores = {88,50,38,100,90,100,99,75};
        int s_len = scores.length;
        int[] ranking = new int[s_len];

        // [1.5]: 오름차순으로 배열 정렬 --&gt; Arrays.sort(배열명); --&gt;import필요.
        Arrays.sort(scores);

        // [2]: 반복문을 돌면서 랭킹 처리
        for(int i=0;i&lt;s_len;i++) {

            // 랭킹 초기화 --&gt; 일단 전부 1등으로 초기화
            ranking[i] = 1;

            // 중첩 반복문
            for(int j=0; j&lt;s_len;j++)
                if(scores[i] &lt; scores[j])
                    ranking[i]++;    
        }
        // [3]: 출력 --&gt; 별도의 메소드 호
        printRanking(scores, ranking);
    }
}</code></pre>]]></description>
        </item>
        <item>
            <title><![CDATA[Java100 Part.4 - 내장된 정렬 메소드를 이용한 정렬 (내림차순 정렬)]]></title>
            <link>https://velog.io/@wusi_univ/Java100-Part.4-%EB%82%B4%EC%9E%A5%EB%90%9C-%EC%A0%95%EB%A0%AC-%EB%A9%94%EC%86%8C%EB%93%9C%EB%A5%BC-%EC%9D%B4%EC%9A%A9%ED%95%9C-%EC%A0%95%EB%A0%AC-%EB%82%B4%EB%A6%BC%EC%B0%A8%EC%88%9C-%EC%A0%95%EB%A0%AC</link>
            <guid>https://velog.io/@wusi_univ/Java100-Part.4-%EB%82%B4%EC%9E%A5%EB%90%9C-%EC%A0%95%EB%A0%AC-%EB%A9%94%EC%86%8C%EB%93%9C%EB%A5%BC-%EC%9D%B4%EC%9A%A9%ED%95%9C-%EC%A0%95%EB%A0%AC-%EB%82%B4%EB%A6%BC%EC%B0%A8%EC%88%9C-%EC%A0%95%EB%A0%AC</guid>
            <pubDate>Wed, 23 Feb 2022 22:12:16 GMT</pubDate>
            <description><![CDATA[<pre><code>import java.util.Arrays;
import java.util.Collections;

public class ex100_1 {
    public static void main(String[] args) {

        // [1]: 배열 선언 --&gt; 성적 배열
        // 이때, 내림차순이거나 또는 원하는대로 정렬의 조건을 설정해서 하고자 할 때
        // -&gt; 기본형(Primitive Type)의 배열에는 적용이 안된다.
        // 참고로, String타입은 기본형이 아니다.
        Integer[] scores = {88,55,33,100,90,99,77,66};

        // [2]: 성적 배열 -&gt; 내림차순 정렬 -&gt; Arrays.sort();
        // -&gt; import필요 -&gt; 추가 옵션 설정이 필요 -&gt; (배열명, 컬렉션 reverseOrder)
        System.out.print(&quot;화장실(정렬) 들어가기 전= &quot;);
        for(int i=0; i&lt;scores.length; i++)
            System.out.print(scores[i]+&quot; &quot;);System.out.println();

        // 내림차순 정렬
        Arrays.sort(scores,Collections.reverseOrder());

        System.out.print(&quot;화장실(정렬) 들어가기 후= &quot;);
        for(int i=0; i&lt;scores.length;i++)
            System.out.print(scores[i]+&quot; &quot;);System.out.println();

        // [3]: 향상된 for문 사용
        System.out.print(&quot;화장실(정렬) 들어가기 후= &quot;);
        for(int i:scores)
            System.out.print(i+&quot; &quot;);
    }
}</code></pre>]]></description>
        </item>
        <item>
            <title><![CDATA[Java100 Part.4 - 내장된 정렬 메소드를 이용한 정렬 (오름차순 정렬)]]></title>
            <link>https://velog.io/@wusi_univ/Java100-Part.4-%EB%82%B4%EC%9E%A5%EB%90%9C-%EC%A0%95%EB%A0%AC-%EB%A9%94%EC%86%8C%EB%93%9C%EB%A5%BC-%EC%9D%B4%EC%9A%A9%ED%95%9C-%EC%A0%95%EB%A0%AC-%EC%98%A4%EB%A6%84%EC%B0%A8%EC%88%9C-%EC%A0%95%EB%A0%AC</link>
            <guid>https://velog.io/@wusi_univ/Java100-Part.4-%EB%82%B4%EC%9E%A5%EB%90%9C-%EC%A0%95%EB%A0%AC-%EB%A9%94%EC%86%8C%EB%93%9C%EB%A5%BC-%EC%9D%B4%EC%9A%A9%ED%95%9C-%EC%A0%95%EB%A0%AC-%EC%98%A4%EB%A6%84%EC%B0%A8%EC%88%9C-%EC%A0%95%EB%A0%AC</guid>
            <pubDate>Mon, 21 Feb 2022 22:33:01 GMT</pubDate>
            <description><![CDATA[<pre><code>88, 50, 38, 100, 90, 100, 99, 65
----------------------------------------------------------------
화장실(정렬) 들어가기 전 = 88 50 38 100 90 100 99 65
화장실(정렬) 들어가기 후 = 38 50 65 88 90 99 100 100
화장실(정렬) 들어가기 후 = 38 50 65 88 90 99 100 100</code></pre><hr>
<pre><code>import java.util.Arrays;

public class ex100_1 {
    public static void main(String[] args) {
        //[1]: 배열 선언 --&gt; 성적 배열
        int[] scores = {88,55,39,100,90,100,98,67};

        // [2]: 성적 배열 --&gt; 오름차순 정렬 --&gt; Arrays.sort(배열명);--&gt;오름차순이 기본정렬 --&gt; import 필요
        // 클래스 메소드로써 Arrays 클래스의 인스턴스 생성없이 바로 사용 가능
        System.out.print(&quot;화장실(정렬) 들어가기 전= &quot;);
        for(int i=0; i&lt;scores.length;i++)
            System.out.print(scores[i]+&quot; &quot;);System.out.println();

        Arrays.sort(scores);

        System.out.print(&quot;화장실(정렬) 들어가기 후= &quot;);
        for(int i=0;i&lt;scores.length;i++)
            System.out.print(scores[i]+&quot; &quot;);System.out.println();

        // [3]: 향상된 for문 사용
        System.out.print(&quot;화장실(정렬) 들어가기 후= &quot;);
        for(int i: scores)
            //System.out.print(scores[i]); //Err
            System.out.print(i+&quot; &quot;); System.out.println();
    }
}</code></pre>]]></description>
        </item>
        <item>
            <title><![CDATA[Java100 Part.4 - 랜덤 숫자 생성 후 최댓값, 최솟값 출력]]></title>
            <link>https://velog.io/@wusi_univ/Java100-Part.4-%EB%9E%9C%EB%8D%A4-%EC%88%AB%EC%9E%90-%EC%83%9D%EC%84%B1-%ED%9B%84-%EC%B5%9C%EB%8C%93%EA%B0%92-%EC%B5%9C%EC%86%9F%EA%B0%92-%EC%B6%9C%EB%A0%A5</link>
            <guid>https://velog.io/@wusi_univ/Java100-Part.4-%EB%9E%9C%EB%8D%A4-%EC%88%AB%EC%9E%90-%EC%83%9D%EC%84%B1-%ED%9B%84-%EC%B5%9C%EB%8C%93%EA%B0%92-%EC%B5%9C%EC%86%9F%EA%B0%92-%EC%B6%9C%EB%A0%A5</guid>
            <pubDate>Mon, 21 Feb 2022 20:58:01 GMT</pubDate>
            <description><![CDATA[<pre><code>89 79 49 61 21 31 22 5 81 3
------------------------------------------------------------
ar 배열내 최댓값: 89
ar 배열내 최솟값: 3
------------------------------------------------------------</code></pre><hr>
<pre><code>public class ex100_1 {
    public static void main(String[] args) {

        // [1]: 정수 배열 선언
        int[] ar = new int[10];

        // [2]: 반복문을 돌면서 랜덤으로 10개 정수 값을 셋팅 -&gt; Math.random()
        for(int i=0; i&lt;ar.length; i++) {
            ar[i] = (int)(Math.random() * 100); // --- 무작위로 숫자(double type)를 반환--;
            System.out.print(ar[i]+&quot; &quot;);
            // System.out.println((int)(Math.random()*10));
        }
        System.out.println();

        // [3]: 최댓값, 최솟값 변수 초기화
        int max = ar[0], min = ar[0];

        // [4]: 반복문을 돌면서 최댓값, 최솟값 비교
        for(int i=0; i&lt;ar.length; i++) {
            if(max &lt; ar[i]) max = ar[i];
            if(min &gt; ar[i]) min = ar[i];
        }
        // [5]: 출력
        System.out.println(&quot;------------------------------&quot;);
        System.out.println(&quot;ar 배열내 최댓값:&quot;+max);
        System.out.println(&quot;ar 배열내 최솟값:&quot;+min);
        System.out.println(&quot;------------------------------&quot;);
    }
}</code></pre>]]></description>
        </item>
        <item>
            <title><![CDATA[Java100 Part.4 - 최솟값을 구하는 알고리즘]]></title>
            <link>https://velog.io/@wusi_univ/Java100-Part.4-%EC%B5%9C%EC%86%9F%EA%B0%92%EC%9D%84-%EA%B5%AC%ED%95%98%EB%8A%94-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98</link>
            <guid>https://velog.io/@wusi_univ/Java100-Part.4-%EC%B5%9C%EC%86%9F%EA%B0%92%EC%9D%84-%EA%B5%AC%ED%95%98%EB%8A%94-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98</guid>
            <pubDate>Mon, 21 Feb 2022 20:16:15 GMT</pubDate>
            <description><![CDATA[<p>[4, 13, 150, 17, -2]</p>
<p>현재 배열내 가장 작은 값은: -4
현재 배열내 가장 작은 값은: -2</p>
<hr>
<pre><code>public class ex100_1 {
    public static void main(String[] args) {

        //[1]: 배열 선언
        int[] ar = {4, 13, 150, 17, -2};

        //[2]: max, min 함수
        System.out.println(Math.max(10, 4));
        System.out.println(Math.min(10, 4));

        //[3]: 일단 배열내 첫번째 원소의 값이 제일 적다고 가정하고 초기화
        //int min = Integer.MAX_VALUE;
        int min = ar[0];

        //[4]: 반복문 돌면서 비교하여 출력 --&gt; 이때, 비교는 2번째 부터 비교하면 되니깐 int=1로 시작.
        System.out.println(&quot;현재 배열내 가장 작은 값은:&quot;+min);

        for(int i=1; i&lt;ar.length; i++)
            if(min&gt;ar[i])
                min=ar[i];
        System.out.println(&quot;현재 배열내 가장 작 값은:&quot;+min);
    }
}</code></pre>]]></description>
        </item>
        <item>
            <title><![CDATA[Java100 Part.4 - 최댓값을 구하는 알고리즘]]></title>
            <link>https://velog.io/@wusi_univ/Java100-Part.4-%EC%B5%9C%EB%8C%93%EA%B0%92%EC%9D%84-%EA%B5%AC%ED%95%98%EB%8A%94-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98</link>
            <guid>https://velog.io/@wusi_univ/Java100-Part.4-%EC%B5%9C%EB%8C%93%EA%B0%92%EC%9D%84-%EA%B5%AC%ED%95%98%EB%8A%94-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98</guid>
            <pubDate>Sun, 20 Feb 2022 10:15:39 GMT</pubDate>
            <description><![CDATA[<p>[4,13,150,17,-2]</p>
<p>현재 배열 내 가장 큰 값은: 4
현재 배열 내 가장 큰 값은: 150</p>
<hr>
<pre><code>public class ex100_1 {
    public static void main(String[] args) {
       int[] ar = {4, 13, 150, 17, -2};

       int max = ar[0];

       System.out.println(&quot;현재 배열 내 가장 큰 값은:&quot;+max);

       for(int i=1; i&lt;ar.length; i++) 
           if(max&lt;ar[i]) 
               max=ar[i];

           System.out.println(&quot;현재 배열 내 가장 큰 값은:&quot;+max);
       }
}</code></pre>]]></description>
        </item>
        <item>
            <title><![CDATA[Java100 Part.4 - 다형성을 활용한 객체 생성시 배열과 반복문을 사용한 객체 생성]]></title>
            <link>https://velog.io/@wusi_univ/Java100-Part.4-%EB%8B%A4%ED%98%95%EC%84%B1%EC%9D%84-%ED%99%9C%EC%9A%A9%ED%95%9C-%EA%B0%9D%EC%B2%B4-%EC%83%9D%EC%84%B1%EC%8B%9C-%EB%B0%B0%EC%97%B4%EA%B3%BC-%EB%B0%98%EB%B3%B5%EB%AC%B8%EC%9D%84-%EC%82%AC%EC%9A%A9%ED%95%9C-%EA%B0%9D%EC%B2%B4-%EC%83%9D%EC%84%B1</link>
            <guid>https://velog.io/@wusi_univ/Java100-Part.4-%EB%8B%A4%ED%98%95%EC%84%B1%EC%9D%84-%ED%99%9C%EC%9A%A9%ED%95%9C-%EA%B0%9D%EC%B2%B4-%EC%83%9D%EC%84%B1%EC%8B%9C-%EB%B0%B0%EC%97%B4%EA%B3%BC-%EB%B0%98%EB%B3%B5%EB%AC%B8%EC%9D%84-%EC%82%AC%EC%9A%A9%ED%95%9C-%EA%B0%9D%EC%B2%B4-%EC%83%9D%EC%84%B1</guid>
            <pubDate>Sun, 20 Feb 2022 00:47:36 GMT</pubDate>
            <description><![CDATA[<pre><code>abstract class Car {
    abstract void run();
}
class Ambulance extends Car {
    void run() {System.out.println(&quot;앰블런스 지나가요~ 삐뽀삐뽀~&quot;);}
}
class Cultivate extends Car {
    void run() {System.out.println(&quot;경운기 지나가요~ 덜컹덜컹~&quot;);}
}
class Sportscar extends Car {
    void run() {System.out.println(&quot;스포츠카 지나가요~ 씽~&quot;);}
}

public class ex100_1 {
    public static void main(String[] args) {
        //[1]: 배열 길이가 3인 Car 객체 배열 선언
        //Car[] cars = new Car[3];
        //System.out.println(cars[0]); // null ➡️ 각 배열에는 아직 null 값만 존재.
        // cars = new Car[]{new Ambulance(), new Cultivator(), new SportsCar()}; // cars 배열 초기화

        //[2]: 1번 방법 말고 ➡️ 자식 클래스로 객체 생성 ➡️ 타입은 부모 타입으로 ➡️ 이렇게 생성된 객체들로 바로 배열 초기화 ➡️ 다형성 덕분.
        Car[] cars = {new Ambulance(), new Cultivate(), new Sportscar()};

        //[3]: 반복문 돌면서 각 객체의 run()메소드 호출
        for(int i=0;i&lt;cars.length;i++) 
            //System.out.println(cars[i]); // 각 객체가 생성된 메모리 공간의 주소 값을 출력.
            cars[i].run();


    // [4]: 향상된 for문
    System.out.println(&quot;--------------------------------&quot;);
    for(Car obj: cars)
        //System.out.println(obj);
        obj.run();

    }
}</code></pre><hr>
<pre><code>abstract class Car {
    abstract void run();
}
class Ambulance extends Car {
    void run() {System.out.println(&quot;앰블런스 지나가요~ 삐뽀삐뽀~&quot;);}
}
class Cultivate extends Car {
    void run() {System.out.println(&quot;경운기 지나가요~ 덜컹덜컹~&quot;);}
}
class Sportscar extends Car {
    void run() {System.out.println(&quot;스포츠카 지나가요~ 씽~&quot;);}
}

public class ex100_1 {
    public static void main(String[] args) {
        Car[] cars = {new Ambulance(), new Cultivate(), new Sportscar()};
        for(int i=0;i&lt;cars.length;i++) {
            cars[i].run(); 
            }
        System.out.println(&quot;--------------------------------&quot;);
    for(Car obj: cars)
        obj.run();

    }
}</code></pre>]]></description>
        </item>
        <item>
            <title><![CDATA[Java100 Part.4 - 추상 클래스와 상속을 사용한 다형성 예제]]></title>
            <link>https://velog.io/@wusi_univ/Java100-Part.4-%EC%B6%94%EC%83%81-%ED%81%B4%EB%9E%98%EC%8A%A4%EC%99%80-%EC%83%81%EC%86%8D%EC%9D%84-%EC%82%AC%EC%9A%A9%ED%95%9C-%EB%8B%A4%ED%98%95%EC%84%B1-%EC%98%88%EC%A0%9C</link>
            <guid>https://velog.io/@wusi_univ/Java100-Part.4-%EC%B6%94%EC%83%81-%ED%81%B4%EB%9E%98%EC%8A%A4%EC%99%80-%EC%83%81%EC%86%8D%EC%9D%84-%EC%82%AC%EC%9A%A9%ED%95%9C-%EB%8B%A4%ED%98%95%EC%84%B1-%EC%98%88%EC%A0%9C</guid>
            <pubDate>Sat, 19 Feb 2022 22:46:48 GMT</pubDate>
            <description><![CDATA[<pre><code>abstract class Car {
    abstract void run();
}

class Ambulance extends Car {
    void run() {System.out.println(&quot;앰블런스 지나가요~삐뽀삐뽀~&quot;);}
}

class Cultivator extends Car {
    void run() {System.out.println(&quot;경운기 지나가요~ 덜컹덜컹~&quot;);}
}

class SportsCar extends Car {
    void run() {System.out.println(&quot;스포츠카 지나가요~ 씽~&quot;);}
}

public class Java100_oop_polymorphism5 {
    public static void main(String[] args) {

    //[1]: 객체 생성
    Car c1 = new Ambluance();    //정상
    Car c2 = new Cultivator();  //정상
    Car c3 = new SportsCar();  //정상

    //[2]: run()메소드 호출
    c1.run();
    c2.run();
    c3.run();

    }
}</code></pre>]]></description>
        </item>
        <item>
            <title><![CDATA[Java100 Part.4 - 다형성 객체 생성]]></title>
            <link>https://velog.io/@wusi_univ/Java100-Part.4-%EB%8B%A4%ED%98%95%EC%84%B1-%EA%B0%9D%EC%B2%B4-%EC%83%9D%EC%84%B1</link>
            <guid>https://velog.io/@wusi_univ/Java100-Part.4-%EB%8B%A4%ED%98%95%EC%84%B1-%EA%B0%9D%EC%B2%B4-%EC%83%9D%EC%84%B1</guid>
            <pubDate>Thu, 17 Feb 2022 22:24:38 GMT</pubDate>
            <description><![CDATA[<pre><code>class Person {
    void method1() {System.out.println(&quot;에이에이에이&quot;);}
    void ppp() {System.out.println(&quot;ppp&quot;);}
}
class Student extends Person {
    void method1() {System.out.println(&quot;오버라이딩 - AAA&quot;);}
    void sss() {System.out.println(&quot;sss&quot;);}
    void x() {
        method1();
        super.method1();
    }
}

public class Java100_oop_Polymorphism3 {
 public static void main(String[] args) {

     // [1]: 객체 생성 --&gt; 부모 + 자식 클래스의 모든 자원을 다 쓸 수 있다.
    // [!]: 그런데 말이죠 --&gt; 자식 클래스에서 오버라이딩된 부모 클래스의 원본 메소드를 호출하고 싶다면? --&gt; super 사용.
    Student s1 = new Student();
    System.out.println(&quot;-----------------------[super 사용]&quot;);
    s1.x();
    System.out.println(&quot;-----------------------[super 사용]&quot;);

    // [2]: 객체 생성 --&gt; 범위는 부모의 자원만을 쓸 수 있다.(?)
     //[!]: 그런데 말이죠..-&gt; 자식의 메소드를 바로 호출하고 싶다면? --&gt; 캐스트 필요.
    Person s2 = new Student();
    System.out.println(&quot;-----------------------------[캐스트 사용]&quot;);
    ((Student)s2).sss();    //sss
    System.out.println(&quot;-----------------------------[캐스트 사용]&quot;);

 }
}</code></pre>]]></description>
        </item>
        <item>
            <title><![CDATA[Java100 Part.4 - 다형성 객체 생성 방법]]></title>
            <link>https://velog.io/@wusi_univ/Java100-Part.4-%EB%8B%A4%ED%98%95%EC%84%B1-%EA%B0%9D%EC%B2%B4-%EC%83%9D%EC%84%B1-%EB%B0%A9%EB%B2%95</link>
            <guid>https://velog.io/@wusi_univ/Java100-Part.4-%EB%8B%A4%ED%98%95%EC%84%B1-%EA%B0%9D%EC%B2%B4-%EC%83%9D%EC%84%B1-%EB%B0%A9%EB%B2%95</guid>
            <pubDate>Tue, 15 Feb 2022 22:19:59 GMT</pubDate>
            <description><![CDATA[<h2 id="핵심-정리">핵심 정리</h2>
<ul>
<li>부모 클래스 Person이 있고, 이를 상속받은 자식 클래스 Student가 있다.</li>
<li>정리하면, 그 하위 클래스의 인스턴스(객체)는 보다 위인 상위 클래스의 인스턴스(객체)로도 사용될 수 있다.</li>
<li>그런데, 그 반대는 안된다.</li>
<li>따라서, 상위(부모) 클래스의 인스턴스(객체)는 하위(자식) 클래스의 인스턴스(객체)로 사용될 수 없다.</li>
</ul>
<pre><code>class Person {}
class Student extends Person {}

public class Java100_oop_Polymorphism2 {
    public static void main(String[] args) {
        //[1]: 객체 생성
        Student s1 = new Student(); //지극히 정상 ➡️ 에러날 이유가 하나도 없다.

        //[2]: 객체 생성 ➡️  타입은 부모 타입으로 생성
         Person s2 = new Student(); // 이것도 상위 타입 클래스 사용 가능 ➡️ 다형성

       //[3]: 객체 생성
           Person p1 = new Person(); // 지극히 정상

       //[4]: 객체 생성 ➡️ 상위(부모) 클래스로 객체를 생성하면서 타입은 하위 타입을 쓰는 경우 ➡️ Err
        Student s2 = new Person();
    }
}</code></pre>]]></description>
        </item>
        <item>
            <title><![CDATA[Java100 Part.4 - 다형성(polymorphism)]]></title>
            <link>https://velog.io/@wusi_univ/Java100-Part.4-%EB%8B%A4%ED%98%95%EC%84%B1polymorphism</link>
            <guid>https://velog.io/@wusi_univ/Java100-Part.4-%EB%8B%A4%ED%98%95%EC%84%B1polymorphism</guid>
            <pubDate>Tue, 15 Feb 2022 20:58:33 GMT</pubDate>
            <description><![CDATA[<h2 id="1-다형성이란">1. 다형성이란?</h2>
<ul>
<li>다형성이란 다양한 형태 또는 특성을 가진다는 의미.</li>
<li>자바와 같은 객체 지향 언어에서의 의미는 부모 클래스를 상속받은 <em><strong>자식 클래스의 인스턴스가</strong></em> 부모의 객체로도 사용되고, 뿐만 아니라 자식 클래스의 객체로도 사용될 수 있는 다양한 상황을 의미한다.</li>
</ul>
<h2 id="2-예시">2. 예시</h2>
<ul>
<li>부모 클래스 Bird가 있고, 이를 상속받은 자식 클래스 Parrot이 있다고 가정하자.</li>
<li>이때, &quot;앵무새가 말을 하네...허허~&quot;사람들이 이렇게 말할 수 있다.</li>
<li>그런데, 앵무새는 새이기 때문에 &quot;새가 말을 하네...허허~&quot; ⬅️ 이렇게 말할 수 있다.</li>
</ul>
<h2 id="3-결론">3. 결론</h2>
<ul>
<li>정리하면, 하위 클래스의 인스턴스(객체)는 보다 위인 상위 클래스의 인스턴스(객체)로도 사용될 수 있다.</li>
<li>그런데 그 반대는 안된다.</li>
<li>왜냐하면, &quot;앵무새&quot;는 분명 그 상위인 &quot;새&quot;라고 말할 수 있지만, 새는 종류가 많기 때문에 모든 새가 앵무새는 아니기 때문이다.</li>
<li>따라서, 상위(부모)클래스의 인스턴스(객체)는 하위(자식)클래스의 인스턴스(객체)로 사용될 수 없다.</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[Java100 Part.4 - 인터페이스 문법]]></title>
            <link>https://velog.io/@wusi_univ/Java100-Part.4-%EC%9D%B8%ED%84%B0%ED%8E%98%EC%9D%B4%EC%8A%A4-%EB%AC%B8%EB%B2%95</link>
            <guid>https://velog.io/@wusi_univ/Java100-Part.4-%EC%9D%B8%ED%84%B0%ED%8E%98%EC%9D%B4%EC%8A%A4-%EB%AC%B8%EB%B2%95</guid>
            <pubDate>Sun, 13 Feb 2022 22:44:15 GMT</pubDate>
            <description><![CDATA[<pre><code>class Person {
    // Field
    String name;
    int age;
    int weight;

    // Constructor
    Person() {}
    Person(String name, int age, int weight) {
        this.name = name;
        this.age = age;
        this.weight = weight;
    }

    // Method
    void wash() {System.out.println(&quot;씻다.&quot;);}
    void study() {System.out.println(&quot;공부하다.&quot;);}
    void play() {System.out.println(&quot;놀다&quot;);}

}

interface Allowance {
    //Field
    //변수는 안되나 상수는 되므로 상수로 지정해주면 됨 --&gt; public static final을 붙여주면 됨.
    // 인터페이스 내 모든 멤버 필드(변수)는 public static final이야 함. --&gt; 생략이 가능. --&gt; 그냥 &quot;타입 상수명&quot;지정해서 쓰면 됨.
    String aaa = &quot;코리아&quot;;
    int bbb = 100;

    // Abstract Method
    // 인터페이스 내 모든 메소드는 public abstract 이어야 함 --&gt; 생략이 가능.
    // 인터페이스에서는 추상 메소드만 사용 가
    abstract void in(int price, String name);
    abstract void out(int price, String name);
    }

interface Train {
    // Abstract Method
    abstract void train(int training_pay, String name);
    }

class Student extends Person implements Allowance, Train {
    // Field

    // Constructor
    Student() {}
    Student(String name, int age, int weight) {
        super(name, age, weight);
    }

    // Method
    public void in(int price, String name) {System.out.printf(&quot;%s에게서 %d원 용돈을 받았습니다.%n&quot;,name, price);}
    public void out(int price, String name) {System.out.printf(&quot;%d원 금액을 지출했습니다.[지출용도 --&gt; %s]%n&quot;, price, name);}
    public void train(int training_pay, String name) {System.out.printf(&quot;[%s --&gt; %d원 입금완료]%n&quot;,name, training_pay);}
}

public class ex100_1 {
    public static void main(String[] args) {
        // [1]: 객체 생성
        Student s1 = new Student(&quot;홍길동&quot;, 20, 85);

        // [2]: 클래스와 인터페이스로 부터 상속(Person)과 구현(Allowance, Train)을 한 메소드들 호출하 
        s1.wash();
        s1.study();
        s1.play();
        s1.in(10000, &quot;엄마&quot;);
        s1.out(5000, &quot;편의점&quot;);
        s1.train(50000, &quot;아빠&quot;);

        //[3]: 상수 필드 사용하
        System.out.println(s1.aaa);
        System.out.println(s1.bbb);
        System.out.println(Allowance.aaa); //코리아
        System.out.println(Allowance.bbb); //100
    }
}</code></pre>]]></description>
        </item>
        <item>
            <title><![CDATA[Java100 Part.4 - 인터페이스]]></title>
            <link>https://velog.io/@wusi_univ/Java100-Part.4-%EC%9D%B8%ED%84%B0%ED%8E%98%EC%9D%B4%EC%8A%A4</link>
            <guid>https://velog.io/@wusi_univ/Java100-Part.4-%EC%9D%B8%ED%84%B0%ED%8E%98%EC%9D%B4%EC%8A%A4</guid>
            <pubDate>Sun, 13 Feb 2022 20:17:56 GMT</pubDate>
            <description><![CDATA[<h2 id="인터페이스란-무엇인가">인터페이스란 무엇인가?</h2>
<ol>
<li>사전적 의미 ➡️ 결합부, 접속기 ➡️ 사용자간 또는 컴퓨터간 통신이 가능하도록 해주는 디바이스나 프로그램.</li>
<li>큰 틀에서 본다면 자바에서의 인터페이스 개념도 사전적 의미와 비슷하다.</li>
<li>상호간 통신을 위해서는 &quot;규격&quot;이 중요하다. ➡️ 일본이 110v 가전제품을 한국으로 가지고 와도 &quot;규격&quot;이 맞지 않으므로 사용할 수 없다.</li>
<li>일본의 가전기업들이 한국에서 전자제품을 팔고 싶다면 한국내 220v &quot;규격&quot;을 지켜서 만들어야만 팔 수 있다.</li>
<li>이러한 &quot;규격&quot;을 인터페이스라 할 수 있고, 인터페이스는 하나의 &quot;표준화&quot;를 제공하는 것이라 할 수 있다.</li>
</ol>
<h2 id="추상-클래스-vs-인터페이스">추상 클래스 vs 인터페이스?</h2>
<ol>
<li>추상 클래스와 거의 비슷하다. ➡️ 그러나 추상화 정도가 더 높다(더 엄격하다.) ➡️ 따라서, 일반 메소드 멤버 필드(변수)를 가질 수 없다.</li>
<li>이러한 점들이 추상 클래스와 인터페이스간 가장 큰 차이점중 하나이다. ➡️ 차이점이 더 있다...?!</li>
</ol>
<h2 id="자바에서의-인터페이스-문법">자바에서의 인터페이스 문법?</h2>
<ol>
<li>표준화 및 규격을 인터페이스로 제공.</li>
<li>따라서 어떤 클래스가 해당 인터페이스를 사용(상속)한다면 인터페이스에 선언되어져 있는 메소드를 구현해야 한다.</li>
<li>class ➡️ extends(O) / interface ➡️ extends(X), implements(O)</li>
<li>추상 클래스와 같이 메소드의 구체적인 내용은 기술되어져 있지 않으므로 인터페이스를 상속받은 클래스에서 재정의(오버라이딩)하여 사용해야 한다.</li>
<li>인터페이스는 interface 키워드를 사용.</li>
</ol>
<h2 id="상속-vs-구현">상속 vs 구현</h2>
<ol>
<li>클래스와 인터페이스 이 둘의 가장 큰 차이점 중 하나는 &quot;상속&quot;이다. ➡️ a,b</li>
<li>자바에서 클래스는 &quot;단일 상속&quot;만 가능하지만, 인터페이스는 &quot;다중 상속&quot;이 가능하다.</li>
<li>그러나 인터페이스에서는 extends 표현을 쓰지 않고 &quot;구현&quot;의 의미를 강조하는 implements 키워드를 사용하여 다중 상속을 구현한다.</li>
<li>상속을 받는 extends 키워드와 구현을 하는 implements 키워드가 동시에 쓰일 때 ➡️ extends 키워드가 항상 먼저 쓰인다.</li>
</ol>
<h2 id="장점">장점</h2>
<ol>
<li>인터페이스를 이용하면 메소드의 추상적인 &quot;선언&quot;과 그 메소드들을 구체적인 &quot;구현&quot;부분을 분리시킬 수 있다. ➡️ 매우 큰 장점.</li>
<li>하청을 주는 대기업(갑)은 하청업체(을)에 인터페이스만 제공 ➡️ 각 하청업체(을)들이 이를 준수하여(=상속 받아) 개발.</li>
<li>분업화된 시스템을 구축하여 &quot;갑&quot;과 &quot;을&quot;이 독립적으로 프로젝트 개발을 해나갈 수 있다. ➡️ 매우 큰 장점</li>
</ol>
<hr>
<pre><code>public class Java100_oop_Interface2 {
    public static void main(String[] args) {

        //[1]: 객체 생성

    }
}

// Person 클래스 (부모)

// A 인터페이스 (부모)

// B 인터페이스 (부모)

// Student 클래스 (자식)

// 메인 클래스 (메인 메소드가 포함)</code></pre>]]></description>
        </item>
        <item>
            <title><![CDATA[Java100 Part.4 - 추상 클래스, 추상 메소드]]></title>
            <link>https://velog.io/@wusi_univ/Java100-Part.3-%EC%B6%94%EC%83%81-%ED%81%B4%EB%9E%98%EC%8A%A4-%EC%B6%94%EC%83%81-%EB%A9%94%EC%86%8C%EB%93%9C</link>
            <guid>https://velog.io/@wusi_univ/Java100-Part.3-%EC%B6%94%EC%83%81-%ED%81%B4%EB%9E%98%EC%8A%A4-%EC%B6%94%EC%83%81-%EB%A9%94%EC%86%8C%EB%93%9C</guid>
            <pubDate>Sun, 13 Feb 2022 07:49:40 GMT</pubDate>
            <description><![CDATA[<h2 id="요약">요약</h2>
<p>1.추상(부모) 클래스는 다른(자식) 클래스들의 공통적인 특징을 변수나 메소드로 정의만 해 놓은 것을 말한다. ➡️ 추상 메소드
2. abstract를 앞에 붙이고 클래스 안에 추상 메소드를 포함하고 있다는 것을 제외하면 사실 일반 클래스와 별반 차이가 없다.
3. Field, Constructor, Method(추상 메소드 말고 일반 메소드)도 포함할 수 있다.
4. 메소드 선언만 있고 구체적인 내용은 없으므로 객체를 생성할 수 없다.
5. 따라서, 부모 클래스로서의 역할은 하지만, 구체적인 사용은 상속받은 자식 클래스에서 재정의(오버라이딩)하여 사용해야 한다. ➡️ <strong>강제성</strong>
6. 추상 클래스에서 선언만 해놓음으로써 이후 새로운(자식) 클래스들이 이를 상속 받아 구현하므로 새로운 클래스를 작성할 때 하나의 틀이 된다.</p>
<h2 id="와이-쓰지">와이 쓰지?</h2>
<ol>
<li>우선 강제하기 위함이다.</li>
<li>부모(추상) 클래스가 선언해놓은 메소드를 상속받은 자식 클래스들이 이름 그대로 재정의해서 구현하라고 강제하는 것이다.</li>
<li>상속받은 자식 클래스 입장에서는 자칫 상속만 받고 재정의해서 사용을 안 할 수 있기 때문이다.</li>
<li>즉, 알반 메소드로 구현하면 누군가는 해당 메소드를 구현 안 할 수도 있다.</li>
<li>무조건 상속받은 자식 클래스 입장에서는 추상 메소드를 재정의해서 구현하도록 강제하기 위함이다.</li>
</ol>
<h2 id="꼭-재정의override해야만-하는-가">꼭 재정의(override)해야만 하는 가?</h2>
<ol>
<li>일단 그렇다.</li>
<li>자식 클래스는 일단은 무조건 부모(추상) 클래스로 부터 상속받은 추상 메소드는 오버라이딩해서 재정의를 해야 한다.</li>
<li>추상 메소드를 포함하고 있다면 곧 추상 클래스여야 한다.</li>
</ol>
<h2 id="만약-재정의를-하고-싶지-않다면">만약, 재정의를 하고 싶지 않다면?</h2>
<ol>
<li>자식 클래스에서 상속 받은 추상 메소드를 구현하지 않는다면 자식 클래스도 abstract를 붙여서 추상으로 만들어준다.</li>
<li>class 앞에다가 abstract를 붙인다.</li>
</ol>
<h2 id="결론">결론</h2>
<ol>
<li>부모(추상) 클래스에서 구현을 하지 않는 이유는 해당 메소드의 구현이 상속받는 클래스에 따라서 달라질 수 있기 때문에 선언만 해둔 것이다.</li>
<li>이러한 추상 클래스는 여러면의 개발자가 작업할 때 코드의 확장과 분업을 효율적으로 처리할 수 있게 해준다.</li>
<li>분업화된 시스템에서 공통의 프로젝트를 진행할 때 많이 사용되어지는 중요한 문법이다.</li>
</ol>
<hr>
<blockquote>
<ul>
<li>추상 메소드를 하나라도 가지고 있다면 그 클래스는 abstract를 붙여줘야 한다.</li>
</ul>
</blockquote>
<pre><code>abstract class Animal {
    // 구체적인 내용은 작성하지 않고 공통적인 특징을 추상적으로 선언 --&gt; 리턴값 조차도 없이 메소드명만 선언
   abstract void cry();
}

class Dog extends Animal {
    void cry() {System.out.println(&quot;멍멍~&quot;);}
}

class Cat extends Animal {
    void cry() {System.out.println(&quot;야옹야옹~&quot;);}
}

class Cow extends Animal {
    void cry() {System.out.println(&quot;음메~&quot;);}
}

Public class Java100_oop_AbstractClassMethod {
    public static void main(String[] args) {

        //[1]: 추상 클래스는 구체적인 내용이 없기 때문에 객체를 생성할 수 없다.

        // [2]: 추상 클래스 사용은? --&gt; 상속을 받아서 사용.
        // 즉, 추상 (부모)클래스를 상속받은 자식 클래스에서 해당 메소드를 오버라이딩하여 재정의한 후 사용한다.
        Dog dog = new Dog();
        dog.cry(); // -- 멍멍

        Cat cat = new Cat();
        cat.cry; // --야옹야옹

        Cow cow = new Cow();
        cow.cry(); // -- 음메~
   }
} </code></pre>]]></description>
        </item>
        <item>
            <title><![CDATA[Java100 Part.3 - 반복문 사용하여 객체 배열 구현]]></title>
            <link>https://velog.io/@wusi_univ/Java100-Part.3-%EB%B0%98%EB%B3%B5%EB%AC%B8-%EC%82%AC%EC%9A%A9%EC%9D%84-%ED%86%B5%ED%95%9C-%EA%B0%9D%EC%B2%B4-%EC%83%9D%EC%84%B1-%EC%B0%B8%EC%A1%B0%ED%98%95-%ED%83%80%EC%9E%85%EC%9D%98-%EA%B0%9D%EC%B2%B4%EA%B0%80-%EC%9B%90%EC%86%8C%EC%9D%B8-%EA%B0%9D%EC%B2%B4-%EB%B0%B0%EC%97%B4%EC%9D%84-%EA%B5%AC%ED%98%84</link>
            <guid>https://velog.io/@wusi_univ/Java100-Part.3-%EB%B0%98%EB%B3%B5%EB%AC%B8-%EC%82%AC%EC%9A%A9%EC%9D%84-%ED%86%B5%ED%95%9C-%EA%B0%9D%EC%B2%B4-%EC%83%9D%EC%84%B1-%EC%B0%B8%EC%A1%B0%ED%98%95-%ED%83%80%EC%9E%85%EC%9D%98-%EA%B0%9D%EC%B2%B4%EA%B0%80-%EC%9B%90%EC%86%8C%EC%9D%B8-%EA%B0%9D%EC%B2%B4-%EB%B0%B0%EC%97%B4%EC%9D%84-%EA%B5%AC%ED%98%84</guid>
            <pubDate>Sat, 12 Feb 2022 06:47:06 GMT</pubDate>
            <description><![CDATA[<pre><code>class Person {
    private String name;
    private int age;

Person() {}
Person(String name, int age) {
    this.name = name;
    this.age = age;
}
public String getName() {return name;}
public void setName(String name) {this.name = name;}

public int getAge() {return age;}
public void setName(int age) {this.age = age;}
}

public class ex100_1 {
    public static void main(String[] args) {

        //[1]: 객체 생성
        Person[] pa;            // Person 타입의 객체 배열 변수 pa 선언.
        pa = new Person[5];        // Person 객체의 참조값을 원소로 가지는 배열 공간을 5개 생성 --&gt; 5명 객체 생성할테니 주소 저장해라.


        //[2]: 반복문(for)을 돌면서 Person() 객체 생성
        for(int i=0; i&lt;pa.length;i++) {
            pa[i] = new Person(i+&quot;번 후보자&quot;, i+20); // i만 입력하면 안되나요? --&gt; 문자열을 붙이면 문자열로 전달..

        // [2-1]: getter, setter 메소드 사용해서 출력
        System.out.println(pa[i].getName()+&quot;--&gt;나이:&quot;+pa[i].getAge());
        }
    }
}</code></pre><hr>
<pre><code>class Person {
    String name;
    int age;

Person() {}
Person(String name, int age) {
    this.name = name;
    this.age = age;
}
public String getName() {return name;}
public void setName(String name) {this.name = name;}

public int getAge() {return age;}
public void setName(int age) {this.age = age;}
}

public class ex100_1 {
    public static void main(String[] args) {

        //[1]: 객체 생성
        Person[] pa;            // Person 타입의 객체 배열 변수 pa 선언.
        pa = new Person[5];        // Person 객체의 참조값을 원소로 가지는 배열 공간을 5개 생성 --&gt; 5명 객체 생성할테니 주소 저장해라.


        //[2]: 반복문(for)을 돌면서 Person() 객체 생성
        for(int i=0; i&lt;pa.length;i++) {
            pa[i] = new Person(i+&quot;번 후보자&quot;, i+20); // i만 입력하면 안되나요? --&gt; 문자열을 붙이면 문자열로 전달..
        // [2-2]: 배열 인덱스 사용해서 출력 --&gt; 단, 이렇게 쓰려면 private 선언을 삭제하고 써야함.
        System.out.println(pa[i].name+&quot;의 나이는 &quot;+pa[i].age+&quot;살 입니다.&quot;);
        }
    }
}</code></pre><hr>
<pre><code>class Person {
    String name;
    int age;

Person() {}
Person(String name, int age) {
    this.name = name;
    this.age = age;
}
public String getName() {return name;}
public void setName(String name) {this.name = name;}

public int getAge() {return age;}
public void setName(int age) {this.age = age;}
}

public class ex100_1 {
    public static void main(String[] args) {

        //[1]: 객체 생성
        Person[] pa;            // Person 타입의 객체 배열 변수 pa 선언.
        pa = new Person[5];        // Person 객체의 참조값을 원소로 가지는 배열 공간을 5개 생성 --&gt; 5명 객체 생성할테니 주소 저장해라.


        //[2]: 반복문(for)을 돌면서 Person() 객체 생성
        for(int i=0; i&lt;pa.length;i++) {
            pa[i] = new Person(i+&quot;번 후보자&quot;, i+20); // i만 입력하면 안되나요? --&gt; 문자열을 붙이면 문자열로 전달..

        // [2-3]: printf()    
        System.out.printf(&quot;%s의 나이는 %d살 입니다.%n&quot;,pa[i].name,pa[i].age);
        }
    }
}</code></pre><hr>
<pre><code>class Person {
    private String name;
    private int age;

Person() {}
Person(String name, int age) {
    this.name = name;
    this.age = age;
}
public String getName() {return name;}
public void setName(String name) {this.name = name;}

public int getAge() {return age;}
public void setName(int age) {this.age = age;}
}

public class ex100_1 {
    public static void main(String[] args) {

        //[1]: 객체 생성
        Person[] pa;            // Person 타입의 객체 배열 변수 pa 선언.
        pa = new Person[5];        // Person 객체의 참조값을 원소로 가지는 배열 공간을 5개 생성 --&gt; 5명 객체 생성할테니 주소 저장해라.


        //[2]: 반복문(for)을 돌면서 Person() 객체 생성
        for(int i=0; i&lt;pa.length;i++) {
            pa[i] = new Person(i+&quot;번 후보자&quot;, i+20); // i만 입력하면 안되나요? --&gt; 문자열을 붙이면 문자열로 전달..

        // [2-3]: printf()    
        System.out.printf(&quot;%s의 나이는 %d살 입니다.%n&quot;,pa[i].getName(),pa[i].getAge());
        }
    }
}</code></pre>]]></description>
        </item>
        <item>
            <title><![CDATA[Java100 Part.3 - getter, setter가 포함된 클래스의 상속을 코드로 구현]]></title>
            <link>https://velog.io/@wusi_univ/Java100-Part.3-getter-setter%EA%B0%80-%ED%8F%AC%ED%95%A8%EB%90%9C-%ED%81%B4%EB%9E%98%EC%8A%A4%EC%9D%98-%EC%83%81%EC%86%8D%EC%9D%84-%EC%BD%94%EB%93%9C%EB%A1%9C-%EA%B5%AC%ED%98%84</link>
            <guid>https://velog.io/@wusi_univ/Java100-Part.3-getter-setter%EA%B0%80-%ED%8F%AC%ED%95%A8%EB%90%9C-%ED%81%B4%EB%9E%98%EC%8A%A4%EC%9D%98-%EC%83%81%EC%86%8D%EC%9D%84-%EC%BD%94%EB%93%9C%EB%A1%9C-%EA%B5%AC%ED%98%84</guid>
            <pubDate>Mon, 07 Feb 2022 21:53:29 GMT</pubDate>
            <description><![CDATA[<pre><code>class Person {
    //Field
    private String name;
    private int age;
    private int height;
    private int weight;

    //Constructor
    Person() {}
    Person(String name, int age, int height, int weight) {
        this.name = name;
        this.age = age;
        this.height = height;
        this.weight = weight;
    }

    // Method
    public String getName() {return name;}
    public void setName(String name) {this.name = name;}

    public int getAge() {return age;}
    public void setAge(int age) {this.age = age;}

    public int getHeight() {return height;}
    public void setHeight(int height) {this.height = height;}

    public int getWeight() {return weight;}
    public void setWeight(int weight) {this.weight = weight;}

    public void move() {
        System.out.println(&quot;이동중...&quot;);
    }
}

class Villain extends Person {
    //Field
    private String unique_key;
    private int weapon;
    private double power;

    //Constructor
    Villain() {}
    Villain(String name, int age, int height, int weight, String unique_key, int weapon, double power) {
    super(name, age,height, weight);
    this.unique_key = unique_key;
    this.weapon = weapon;
    this.power = power;
    }

    //Method
    public String getUnique_key() {return unique_key}
    public void setUnique_key(String unique_key) {this.unique_key = unique_key;}

    public int getWeapon() {return weapon;}
    public void setWeapon(int weapon) {this.weapon = weapon;}

    public double getpower() {return power;}
    public void setPower(double power) {this.power = power;}

    //printPerson()
    public void printPerson () {
           System.out.println(&quot;-------------------------------------&quot;);
        System.out.println(&quot;악당 이름:&quot;+getName() );
        System.out.println(&quot;악당 나이:&quot;+getAge() );
        System.out.println(&quot;악당의 키:&quot;+getHeight());
        System.out.println(&quot;악당 체중:&quot;+getWeight());
        System.out.println(&quot;악당 넘버:&quot;+getUnique_key());
        System.out.println(&quot;악당 무기:&quot;+getWeaponName(getWeapon())); //숫자(1~9) ➡️ 1: 창, 2: 방패, 3: 총..
        System.out.println(&quot;악당 파워:&quot;+getPower());
        System.out.println(&quot;-------------------------------------&quot;);
    }
    //getWeaponName()
    public String getWeaponName(int a) {
        String weapon;
        switch(a) {
            case 1:
                weapon = &quot;창&quot;;
                break;
            case 2:
                weapon = &quot;방패;
                break;
            case 3:
                weapon = &quot;총&quot;;
                break;
            default:
                weapon = &quot;---&quot;;
                break;
        }
        return weapon;
    }
}

class Hero extends Person {}

public class Java100_oop_InheritanceSample5 {
    public static void main(String[] args)

    //[1]: 객체 생성
    Villain v1 = new Villain(&quot;좀비&quot;, 20, 180, 80, &quot;15001231&quot;,1,99.5);
    v1.printPerson();
    System.out.print(v1.getName()+&quot;&quot;);
    v1.move(); //부모 클래스의 move() 메소드를 호출.

    //[2]: 객체 생성
    Villain v2 = new Villain(&quot;도깨비&quot;, 30, 175, 70, &quot;11001121&quot;,1,77.5);
    v2.printPerson();
    System.out.print(v2.getName()+&quot;&quot;);
    v2.move(); //부모 클래스의 move() 메소드를 호출.

    //[3]: 객체 생성
    Villain v3 = new Villain(&quot;몽달귀신&quot;, 40, 150, 40, &quot;10001010&quot;,1,27.5);
    v3.printPerson();
    System.out.print(v3.getName()+&quot;&quot;);
    v3.move(); //부모 클래스의 move() 메소드를 호출.

    }
}</code></pre>]]></description>
        </item>
        <item>
            <title><![CDATA[Java100 Part.3 - 오버로딩 & 오버라이딩]]></title>
            <link>https://velog.io/@wusi_univ/Java100-Part.3-%EC%98%A4%EB%B2%84%EB%A1%9C%EB%94%A9-%EC%98%A4%EB%B2%84%EB%9D%BC%EC%9D%B4%EB%94%A9</link>
            <guid>https://velog.io/@wusi_univ/Java100-Part.3-%EC%98%A4%EB%B2%84%EB%A1%9C%EB%94%A9-%EC%98%A4%EB%B2%84%EB%9D%BC%EC%9D%B4%EB%94%A9</guid>
            <pubDate>Sun, 06 Feb 2022 21:38:44 GMT</pubDate>
            <description><![CDATA[<h1 id="오버로딩">오버로딩</h1>
<h4 id="사전적-의미-과적하다">사전적 의미: 과적하다.</h4>
<ul>
<li>자바에서는 하나의 메소드 이름으로 여러 기능을 구현하기 때문에 &#39;과적하다.&#39;라는 뜻의 이름을 붙여준 것으로 보인다.</li>
</ul>
<h4 id="오버로딩의-정의">오버로딩의 정의</h4>
<ul>
<li><p>자바의 한 클래스 내에 이미 사용하려는 이름과 같은 이름을 가진 메소드가 있더라도 매개변수의 개수 또는 타입이 다르면, 같은 이름을 사용해서 메소드를 정의할 수 있다.</p>
<h4 id="오버로딩의-조건">오버로딩의 조건</h4>
</li>
<li><p>메소드의 이름이 같고, 매개변수의 개수나 타입이 달라야 한다. 주의할 점은 &#39;리턴 값만&#39; 다른 것은 오버로딩을 할 수 없다는 것이다.</p>
</li>
</ul>
<hr>
<h1 id="오버라이딩">오버라이딩</h1>
<h4 id="오버라이딩의-정의">오버라이딩의 정의</h4>
<ul>
<li><p>부모 클래스로부터 상속받은 메소드를 자식 클래스에서 재정의하는 것을 오버라이딩이라고 한다. 상속받은 메소드를 그대로 사용할 수도 있지만, 자식 클래스에서 상황에 맞게 변경해야하는 경우 오버라이딩할 필요가 생긴다.</p>
<h4 id="오버로딩의-조건-1">오버로딩의 조건</h4>
</li>
<li><p>오버라이딩은 부모 클래스의 메소드를 재정의하는 것이므로, 자식 클래스에서는 오버라이딩하고자 하는 메소드의 이름, 매개변수, 리턴 값이 모두 같아야 한다.</p>
</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[Java100 Part.3 - 상속]]></title>
            <link>https://velog.io/@wusi_univ/Java100-Part.3-%EC%83%81%EC%86%8D</link>
            <guid>https://velog.io/@wusi_univ/Java100-Part.3-%EC%83%81%EC%86%8D</guid>
            <pubDate>Sat, 05 Feb 2022 02:14:33 GMT</pubDate>
            <description><![CDATA[<pre><code>class Person {

    // Field
    int gender;
    int power;

    //Constructor
    Person() {
        this.gender = 1;   //1: 남성, 2: 여성
        this.power = 100; // 기본파워
    }

    //Method
    void walk() {
        System.out.println(&quot;걸어가고 있어요~);
    }
 }

class Hero extends Person {
    //Field
    String name;
    int age;

    //Constructor
    Hero() {}
    Hero(String name, int age) {
        super(); // 써도 되고 안써도 됨!
        this.name = name;
        this.age = age;
    }
        void eat() {
            System.out.println(&quot;밥먹고 있어요~&quot;);
        }

        void displayPerson() {
            System.out.println(&quot;이름:&quot;+name+&quot;나이:&quot;+age+&quot;,성별:&quot;+gender+&quot;,파워:&quot;+power);
        }
    }

    class Villain {}

    public class Java100_oop_InheritanceSample3 {
        public static void main(String[] args) {

           // [1]: 객체 생성
        Person p1 = new Person();
        p1.walk();
        //p1.eat();//Err

        Hero h1 = new Hero(&quot;슈퍼맨&quot;,20);
        System.out.println(h1.name);
        System.out.println(h1.age);
        System.out.println(h1.gender);
        System.out.println(h1.power);

        }
    }











</code></pre>]]></description>
        </item>
        <item>
            <title><![CDATA[Java100 Part.3 - 상속에 대한 개념과 특징]]></title>
            <link>https://velog.io/@wusi_univ/Java100-Part.3-%EC%83%81%EC%86%8D%EC%97%90-%EB%8C%80%ED%95%9C-%EA%B0%9C%EB%85%90%EA%B3%BC-%ED%8A%B9%EC%A7%95</link>
            <guid>https://velog.io/@wusi_univ/Java100-Part.3-%EC%83%81%EC%86%8D%EC%97%90-%EB%8C%80%ED%95%9C-%EA%B0%9C%EB%85%90%EA%B3%BC-%ED%8A%B9%EC%A7%95</guid>
            <pubDate>Sat, 05 Feb 2022 01:13:14 GMT</pubDate>
            <description><![CDATA[<h1 id="1-상속inheritance이란">1. 상속(Inheritance)이란?</h1>
<ul>
<li>말 그대로 부모 클래스가 가지고 있는 속성(변수)들과 동작/기능(메소드)들을 그대로 물려받아 새로운 클래스를 만드는 것.</li>
<li>상속을 활용하면 물려받은 것들을 그대로 쓰면 되고, 거기에 덧붙여 새로운 것만 만들면 되므로 그만큼 노력과 시간이 세이브됨.</li>
<li>이때, 물려받게 되는 원본 클래스를 부모 클래스(Parent class)또는 슈퍼 클래스(Super class)라고 부른다.</li>
<li>상속받아 새롭게 만들어진 클래스는 말 그대로 자식 클래스(Child class)또는 서브/하위 클래스(Sub class)라고 부른다.</li>
<li>또 다른 표현으로는 기초/기반 클래스(Base class), 파생 클래스(Derived class)라고도 부른다. ➡️ derived: (a)유래된, 파생된</li>
</ul>
<h1 id="2-상속의-장점">2. 상속의 장점</h1>
<ul>
<li>가장 큰 장점 ➡️ 재활용성~!</li>
<li>완전히 새로운 것을 만드는 것이 아니라 기존 부모로부터 상속을 받아 필요한 것만 추가로 더해서 만드는 것.</li>
<li>부모 클래스에 정의되어져 있는 멤버 필드(변수)나 메소드들을 그대로 상속받아 사용하면 된다.</li>
<li>상속받은 메소드라고 해도 필요에 따라서 자식 클래스에서 용도를 변경해서 사용하는 것도 가능.</li>
</ul>
<h1 id="3-상속의-장점">3. 상속의 장점</h1>
<ul>
<li>기존 부모 클래스를 확장한다는 개념 ➡️ extends 키워드 사용.</li>
<li>부모 클래스의 멤버 필드, 메소드는 상속이 가능하나 생성자는 상속이 안된다.</li>
<li>부모 클래스의 접근 제한자 private인 경우에는 아무리 자식 클래스가 상속을 받았다 하더라도 접근 불가능.</li>
</ul>
]]></description>
        </item>
    </channel>
</rss>