<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://mediawiki.zeropage.org/index.php?action=history&amp;feed=atom&amp;title=JavaStudy2003%2F%EB%91%90%EB%B2%88%EC%A7%B8%EA%B3%BC%EC%A0%9C%2F%EB%85%B8%EC%88%98%EB%AF%BC</id>
	<title>JavaStudy2003/두번째과제/노수민 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://mediawiki.zeropage.org/index.php?action=history&amp;feed=atom&amp;title=JavaStudy2003%2F%EB%91%90%EB%B2%88%EC%A7%B8%EA%B3%BC%EC%A0%9C%2F%EB%85%B8%EC%88%98%EB%AF%BC"/>
	<link rel="alternate" type="text/html" href="https://mediawiki.zeropage.org/index.php?title=JavaStudy2003/%EB%91%90%EB%B2%88%EC%A7%B8%EA%B3%BC%EC%A0%9C/%EB%85%B8%EC%88%98%EB%AF%BC&amp;action=history"/>
	<updated>2026-05-15T00:13:19Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.39.8</generator>
	<entry>
		<id>https://mediawiki.zeropage.org/index.php?title=JavaStudy2003/%EB%91%90%EB%B2%88%EC%A7%B8%EA%B3%BC%EC%A0%9C/%EB%85%B8%EC%88%98%EB%AF%BC&amp;diff=33241&amp;oldid=prev</id>
		<title>imported&gt;Unknown at 05:23, 7 February 2021</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.zeropage.org/index.php?title=JavaStudy2003/%EB%91%90%EB%B2%88%EC%A7%B8%EA%B3%BC%EC%A0%9C/%EB%85%B8%EC%88%98%EB%AF%BC&amp;diff=33241&amp;oldid=prev"/>
		<updated>2021-02-07T05:23:32Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== ToyProblem ==&lt;br /&gt;
 public class factorial {&lt;br /&gt;
 	public int process(int number)	{&lt;br /&gt;
 		if(number!=1)&lt;br /&gt;
 			return number*process(number-1);&lt;br /&gt;
 		else return 1; &lt;br /&gt;
 	}&lt;br /&gt;
 	public void main()	{&lt;br /&gt;
 		System.out.println(process(7));&lt;br /&gt;
 	}&lt;br /&gt;
 &lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* 원래 RandomWork 짜던게 있는데 eclipse가 Run이 안되더군요;&lt;br /&gt;
   그래서 디버그 및 결과 확인불가.;&lt;br /&gt;
   Run쪽 옵션이 틀린건가;; 오류가 아니라 메인 클래스가 없다는 등의 다양한 메시지가 뜨면서 안돼요; 결국 간단한 소스를 올립니다&lt;br /&gt;
&lt;br /&gt;
== 객체지향 개념 ==&lt;br /&gt;
&lt;br /&gt;
=== 객체란? ===&lt;br /&gt;
&lt;br /&gt;
* 세계에 존재하는 것들, ex) 사람, 자동차, 컴퓨터 등..&lt;br /&gt;
    다음의 두 가지로 나눌 수 있다.&lt;br /&gt;
*** 상태(state) : 객체가 가지고 있는 속성 또는 특성&lt;br /&gt;
*** 행동(behavior) : 객체가 가지고 있는 기능 또는 할 수 있는 행동&lt;br /&gt;
    ex)  자동차 - 색, 바퀴, 손잡이, 현재 기어위치 등의 상태에,&lt;br /&gt;
                       달린다, 멈춘다, 속도를 높이거나 낮춘다 등의 행동을 한다&lt;br /&gt;
 &lt;br /&gt;
    이러한 실세계를 소프트웨어적으로 표현하기 위한 방법중 하나가 &amp;#039;객체지향&amp;#039;이다.&lt;br /&gt;
&lt;br /&gt;
** 객체의 상태와 행동 -&amp;gt; 소프트웨어 객체의 변수와 메소드&lt;br /&gt;
     로 모델링한다.&lt;br /&gt;
     즉, 상태를 나타내는 변수와 그 상태를 변경하는 행동의 메소드로&lt;br /&gt;
     실세계의 객체를 소프트웨어 객체로 모델링하고 구현한다.&lt;br /&gt;
&lt;br /&gt;
=== 객체지향 방법에서 나타나는 몇 가지 특징 &amp;lt;- OOP의 특징 ===&lt;br /&gt;
&lt;br /&gt;
* 캡슐화 : 변수(상태)와 메소드(행동)를 하나의 묶음으로 캡슐화한다.&lt;br /&gt;
    이것으로 인해 모듈성과 정보은닉이라는 이득을 얻는데,,&lt;br /&gt;
    하나의 객체의 소스가 다른 소스와 무관하게 유지할 수 있고, 또 public이나 private 권한을 통해 정보에 대한 접근 정도를 설정할 수 있다.&lt;br /&gt;
&lt;br /&gt;
* 메시지 : 객체는 다른 객체에 메시지를 보내서 통신할 수 있다.&lt;br /&gt;
                각 메시지는 메시지를 받을 객체, 수행을 요청한 메소드의 이름과 그 메소드에 필요한 매개변수의 세 가지 구성요소를 갖는다.&lt;br /&gt;
&lt;br /&gt;
* 클래스 : 특정한 종류의 모든 객체들에 적용할 수 있는 변수와 메소드를 정의하는 &amp;#039;소프트웨어적인 설계도&amp;#039; 이다.&lt;br /&gt;
    실세계의 객체들의 상태와 행동들을 소프트웨어적으로 추상화해 놓은 것이다.&lt;br /&gt;
    청사진이라고 하기도 하고, 벽돌을 찍기 위한 하나의 틀에 비유하기도 한다.&lt;br /&gt;
&lt;br /&gt;
* 인스턴스 : 클래스에 대한 변수를 선언하는 것을 &amp;#039;인스턴스를 생성한다&amp;#039;고 하고, 이 변수를 인스턴스라 한다.&lt;br /&gt;
    인스턴스를 생성하는 것은 벽돌틀로 벽돌을 찍는다고 할 수있다.&lt;br /&gt;
&lt;br /&gt;
* 객체 : 실세계에 적용 - 자동차(클래스) -&amp;gt; 아반테, 누비라, 그랜저, 티고 등 (객체)&lt;br /&gt;
&lt;br /&gt;
* 상속 : 자동차 클래스에 버스 클래스, 트럭 클래스, 자가용 클래스가 속한다면,&lt;br /&gt;
             자동차 클래스는 상위 클래스, 버스,트럭,자가용 클래스를 하위클래스라 하며, 이들의 관계에서 &amp;quot;하위클래스는 상위클래스를 상속한다&amp;quot;고 한다.&lt;br /&gt;
&lt;br /&gt;
* 다형성 : 같은 이름을 같는 여러 가지 형태가 존재한다는 것&lt;br /&gt;
                자바에 메소드(함수) 다중정의, 매소드 재정의가 있다.&lt;br /&gt;
&lt;br /&gt;
=== 클래스 정의 및 인스턴스(객체) 생성 ===&lt;br /&gt;
&lt;br /&gt;
 자바 언어는 객체지향 프로그래밍을 할 수 있도록 문법을 제공해 준다.&lt;br /&gt;
&lt;br /&gt;
* 클래스 정의&lt;br /&gt;
 class 클래스이름 {&lt;br /&gt;
    // 변수 선언부&lt;br /&gt;
       …&lt;br /&gt;
    // 메소드 선언부&lt;br /&gt;
       …&lt;br /&gt;
 }     &lt;br /&gt;
 &lt;br /&gt;
* 인스턴스 생성&lt;br /&gt;
  클래스이름 클래스인스턴스이름 = new 클래스이름();&lt;br /&gt;
 &lt;br /&gt;
 또는&lt;br /&gt;
 &lt;br /&gt;
 클래스이름 클래스인스턴스이름;&lt;br /&gt;
 &lt;br /&gt;
 클래스인스턴스이름 = new 클래스이름();&lt;br /&gt;
&lt;br /&gt;
=== 변수 및 메소드의 접근제어 ===&lt;br /&gt;
* public - 같은 클래스, 하위클래스 등 같은 패키지의 모든 클래스에서 접근가능&lt;br /&gt;
* private - 같은클래스 내에서만 접근가능&lt;br /&gt;
* protected - 같은 클래스, 하위클래스 등 같은 패키지의 모든 클래스에서 접근가능&lt;br /&gt;
* 생략 : 같은 클래스 또는 같은 패키지의 모든 클래스에서 접근가능, 하위클래스에서 접근 불가능&lt;br /&gt;
&lt;br /&gt;
=== 메소드의 다중 정의 ===&lt;br /&gt;
&lt;br /&gt;
* 같은 이름으로 여러 일을 하는 것&lt;br /&gt;
* 자바에서는 함수 다중 정의만을 제공함&lt;br /&gt;
&lt;br /&gt;
== 객체 생성자와 객체 생성 과정 ==&lt;br /&gt;
&lt;br /&gt;
=== 객체 생성자 ===&lt;br /&gt;
&lt;br /&gt;
자바 언어를 이용하여 객체를 생성하고 필요에 따라 값을 초기화 해 주어야 하는 경우&lt;br /&gt;
객체 생성자는 new 연산자를 이용하여 객체를 생성할 때도 호출된다.&lt;br /&gt;
&lt;br /&gt;
* 객체가 생성될 때 자동호출, 객체의 변수초기화, 메모리 할당들의 작업을 함&lt;br /&gt;
* new 연산자로 객체를 생성할때 호출, 메모리를 할당하고 객체 생성자 호출&lt;br /&gt;
 &lt;br /&gt;
 클래스이름(형식매개변수 리스트) { … }&lt;br /&gt;
 &lt;br /&gt;
 클래스이름(형식매개변수 리스트) {&lt;br /&gt;
 다른 객체 생성자 호출;  ß 반드시 첫번째 줄에서  &lt;br /&gt;
 이루어져야 함.&lt;br /&gt;
  …&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 클래스이름 변수이름 = new 클래스이름(실매개변수 리스트);&lt;br /&gt;
&lt;br /&gt;
===this===&lt;br /&gt;
&lt;br /&gt;
* 자기 자신을 나타냄&lt;br /&gt;
* 메소드 내에서 변수와 객체의 이름이 같을 경우 변수 앞에 this를 붙임&lt;br /&gt;
* 객체생성자 내에서 다른  생성자 호출&lt;br /&gt;
 this&lt;br /&gt;
 &lt;br /&gt;
 this.멤버변수&lt;br /&gt;
 &lt;br /&gt;
 this(매개변수);&lt;br /&gt;
&lt;br /&gt;
=== 클랙스멤버와 인스턴스 멤버 ===&lt;br /&gt;
&lt;br /&gt;
클래스 멤버는 변수와 메소드가 있고,&lt;br /&gt;
이는 인스턴스 변수와 인스턴스 메소드 및 클래스 변수와 클래스 메소드로 나뉜다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 클래스 변수와 클래스 메소드의 선언)&lt;br /&gt;
 &lt;br /&gt;
 [접근권한] static 변수 선언;&lt;br /&gt;
 &lt;br /&gt;
 [접근권한] static 메소드 선언;&lt;br /&gt;
 &lt;br /&gt;
 클래스 변수와 클래스 메소드의 접근)&lt;br /&gt;
 &lt;br /&gt;
 클래스이름.클래스메소드()&lt;br /&gt;
 &lt;br /&gt;
 클래스메소드()&lt;br /&gt;
 &lt;br /&gt;
 객체참조값.클래스메소드()&lt;br /&gt;
&lt;br /&gt;
=== 클래스 초기화 및 객체의 생성 과정 ===&lt;br /&gt;
&lt;br /&gt;
클래스를 처음으로 메모리에 적재&lt;br /&gt;
&lt;br /&gt;
클래스 초기화&lt;br /&gt;
&lt;br /&gt;
클래스 실행&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 상속 ==&lt;br /&gt;
=== 상속, 상위클래스, 하위클래스 ===&lt;br /&gt;
 위에 있음&lt;br /&gt;
=== 상속과 생성자 및 생성 과정 ===&lt;br /&gt;
&lt;br /&gt;
* this : 클래스 내의 객체 생성자에서 다른 객체 생성자를 호출 &lt;br /&gt;
&lt;br /&gt;
* super : 하위클래스의 객체 생성자에서 상위클래스의 객체 생성자를 호출 &lt;br /&gt;
&lt;br /&gt;
* 객체 생성순서&lt;br /&gt;
* new 생성자를 이용하여 객체를 위한 메모리 공간을 할당 &lt;br /&gt;
&lt;br /&gt;
* 모든 인스턴스 변수를 0, &amp;#039;\u0000&amp;#039;, false, 그리고 null 등과 같은 디폴트 초기치로 초기화&lt;br /&gt;
&lt;br /&gt;
* 상위클래스의 생성자를 호출&lt;br /&gt;
&lt;br /&gt;
* 하위클래스에 선언된 인스턴스 변수 초기자 수식 및 인스턴스 초기화 블록을 실행&lt;br /&gt;
&lt;br /&gt;
* 하위클래스의 생성자 몸체를 실행&lt;br /&gt;
&lt;br /&gt;
=== 상속과 인스턴스 메소드의 재정의(Overriding) ===&lt;br /&gt;
기본적으로 하위클래스는 상위클래스로부터 상속되는 상태와 행동들을 가진다.&lt;br /&gt;
&lt;br /&gt;
또한, 하위클래스는 자신에게 필요한 변수들과 메소드를 추가적으로 정의할 수 있습니다. 그리고, 하위클래스는 상위클래스에서 정의된 메소드와 같은 이름, 같은 인자들을 갖는 새로운 메소드를 정의하여 상위클래스에서 상속되는 메소드를 재정의할 수 잇는데,&lt;br /&gt;
&lt;br /&gt;
여기서 몇가지 지켜야 할 것이 있다.&lt;br /&gt;
&lt;br /&gt;
* 인스턴스 메소드이어야 한다. &lt;br /&gt;
* 메소드의 이름이 같아야 한다. &lt;br /&gt;
* 매개변수의 개수가 같아야 한다. &lt;br /&gt;
* 매개변수 각각의 자료형이 일치해야 한다. &lt;br /&gt;
* 메소드의 리턴형이 일치해야 한다. &lt;br /&gt;
&lt;br /&gt;
=== 상속과 변수 및 메소드의 접근제어 ===&lt;br /&gt;
&lt;br /&gt;
* 인스턴스 변수, 클래스 변수, 그리고 클래스 메소드는 은닉될 수는 있어도 재정의 될 수는 없다.&lt;br /&gt;
&lt;br /&gt;
* private 접근지정자로 선언된 변수는 상속할 수 없고, 메소드는 상속 및 재정의 할 수 없다. &lt;br /&gt;
&lt;br /&gt;
* public 또는 protected 접근 지정자로 선언된 변수와 메소드는 상속할 수 있고, 메소드에 대해 재정의 할 수 있다. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
...&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== OOP ==&lt;br /&gt;
&lt;br /&gt;
== 추가 요구 내용 ==&lt;br /&gt;
&lt;br /&gt;
* 내용을 1페이지 이내로 줄어보세요.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[JavaStudy2003/두번째과제]]&lt;br /&gt;
&lt;/div&gt;</summary>
		<author><name>imported&gt;Unknown</name></author>
	</entry>
</feed>