5일차 수업 ( Argument로 정수및 문자형 받아오기 )

1. 클래스들간의 관계( class relationship )
=> 여러 클래스들간에 유기적으로 관련을 맺으면서 하나의 어플리케이션이 동작된다.

=> 현실세계도 객체간의 관계가 존재한다.
  ( 부모자식관계, 학생과교수관계, 친구관계, ....)

   마찬가지로 가상세계에서도 특별한 관계가 존재한다.

 

2. 자바의 관계?

a) has a 관계

트럭 has a 엔진 => 트럭과 엔진의 lifecycle 동일

b) is a 관계 -> 상속관계

관리자 is a 사원
상속관계이다.

 

3. 상속 ( inheritance )

- 클래스들간의 관계중에서 is a 관계이다.
  ( 같은 종 )

 

public class 학생{}
// 대학생 is a 학생
public class 대학생 extends 학생{}

 

* 특징
1 )부모 클래스의 멤버(인스턴스변수,메소드)를 자식이 선언없이 사용 가능하다.

->'상속받는다' 라고 부른다.
2) 부모생성자와 private로 지정된 멤버는 상속 불가.

-> 단일 상속만 제공된다.
==> extends 클래스
==> 계층구조를 명확하게 하기 위해서

3) 자식보다 부모를 먼저 생성한다.
따라서 부모의 생성자를 자동호출하는데 super키워드 이용해서 호출한다.

4) 모든클래스(사용자지정클래스 = API)는 계층구조로 되어 있다.
( 상속관계 )
java.lang.object 클래스가 모든 클래스의 최상위 클래스이다.
(==> object 클래스의 멤버를 모든 클래스가 사용가능하다.)
extends 가 없는 클래스에는 자동으로 extends Object가 지정된다.
따라서 모든 클래스의 부모는 Object가 된다.
항상 Object 클래스가 먼저 생성되고 나중에 순차적으로 생성된다.

 

4. 접근 지정자 (access modifier )
* 지정자( modifier )?
=> 특별한 동작을 취하도록 의미를 갖는 키워드.

 

가. 일반 지정자 : static , final, abstract

예>
 static int num;
 static final int size =3;
 public void a(){}
 public abstract void b();
 public abstrant class Test{};
 public final class AAA{}

나 접근 지정자

=> 클래스들간에 접근제한을 설정하는 방법.

=> 종류 4가지

- public
=> 모든 클래스가 접근 가능하다.
   ( 같은 패키지 및 다른 패키지 모두)
=> 클래스와 메소드에 주로사용. 
- protected 같은 패키지에서 접근가능. +"상속관계(패키지가 달라도 가능)
 
- (default, friendly)
- private
=> 같은 클래스에 접근가능
   ( 상송관계도 부모의 private 멤버를 자식이 접근 불가)
=>인스턴스 변수에 주로 사용
   ( 데이터 보호 이유, 메소드 통해서 인수턴수 변수에 접근 가능)

예> private Strign name;
    plevate int = age;
    외부에서 접근할 필요가 없는 로컬메소드 사용시.
예> public class Test{
 public void a(){ local();}
 public void b(){}

 private void local(){} //Test클래스에서만 사용가능
 }

-> 은닉화 은닉화 구현시가 이용된다.

 

 

Argument 로 정수형 및 문자형 받아오기

 

int data1 = Integer.parseInt(args[0]);  //정수형으로 받아오는것

String arg = args[1];                        // 문자열로 받아오는것
char operator = arg.charAt(0);          //문자열로 받아온것을 문자형으로
int data2 = Integer.parseInt(args[2]);

 

 

====힉습 내용====

 

 1. 클래스들간의 관계( class relationship )
=> 여러 클래스들간에 유기적으로 관련을 맺으면서 하나의 어플리케이션이
   동작된다.

=> 현실세계도 객체간의 관계가 존재한다.
  ( 부모자식관계, 학생과교수관계, 친구관계, ....)

   마찬가지로 가상세계에서도 특별한 관계가 존재한다.

2. 자바의 관계?
==> 학생, 대학생, 컴퓨터, 트럭, 엔진, 라디오.....

가. has a 관계
학생 has a 컴퓨터
트럭 has a 엔진 => 트럭과 엔진의 lifecycle 동일
                => composition
트럭 has a 라디오 => 트럭과 엔진의 lifecycle 다르다.
                  => aggregation

출력결과
==> 수정은 withdraw, deposit 메소드 리턴타입을 boolean으로 변경
입금 : 300 true
출금 : 400 true
출금 : 500 true
출금 : 500 false

홍길동 잔액 : 400

나. is a 관계

대학생 is a 학생
관리자 is a 사원
: 상속관계이다.

3. 상속 ( inheritance )

: 클래스들간의 관계중에서 is a 관계이다.
  ( 같은 종 )
: UML
 학생 => 큰타입 ( 부모클래서, super클래스, parent클래스)
  => subclassing (상속)

 대학생 => 작은타입( 자식클래스, sub클래스, child클래스 )

* 코드표현

public class 학생{}
// 대학생 is a 학생
public class 대학생 extends 학생{}

* 특징
1 )부모 클래스의 멤버(인스턴스변수,메소드)를 자식이 선언없이 사용 가능하다.

->'상속받는다' 라고 부른다.
2) 부모생성자와 private로 지정된 멤버는 상속 불가.

-> 단일 상속만 제공된다.
==> extends 클래스
==> 계층구조를 명확하게 하기 위해서

3) 자식보다 부모를 먼저 생성한다.
따라서 부모의 생성자를 자동호출하는데 super키워드 이용해서 호출한다.

4) 모든클래스(사용자지정클래스 = API)는 계층구조로 되어 있다.
( 상속관계 )
java.lang.object 클래스가 모든 클래스의 최상위 클래스이다.
(==> object 클래스의 멤버를 모든 클래스가 사용가능하다.)
extends 가 없는 클래스에는 자동으로 extends Object가 지정된다.
따라서 모든 클래스의 부모는 Object가 된다.
항상 Object 클래스가 먼저 생성되고 나중에 순차적으로 생성된다.


예>
 Object
 
 Employee{}

 Manager extends Employee{}


4. super 키워드

:this 키워드 자신을 의미하고
 super 키워드는 부모를 의미한다.

:super 키워드 사용하기 위해서는 상속전제/

:super

 

 


예제>
1) 개별적으로 구현
 사각형       원       삼각형
-w            -r        -w
-h                      -h

-넓이()       -넓이()   -넓이()

2) 상속이용
==> 사각형,원,삼각형의 공통적인 특징을 추출해서 큰 개념의 클래스 생성 가능 (  일반화 방법 )

 도형
 -w
 -h
 -

사각형       원       삼각형
-area(){     - area{r*r*3.14}        -area(){w*h/2}
w*h
}

6. 접근 지정자 (access modifier )
* 지정자( modifier )?
=> 특별한 동작을 취하도록 의미를 갖는 키워드.

종류 2가지
가. 일반 지정자 : static , final, abstract

예>
 static int num;
 static final int size =3;
 public void a(){}
 public abstract void b();
 public abstrant class Test{};
 public final class AAA{}

나 접근 지정자

=> 클래스들간에 접근제한을 설정하는 방법.

=> 종류 4가지

- public
=> 모든 클래스가 접근 가능하다.
   ( 같은 패키지 및 다른 패키지 모두)
=> 클래스와 메소드에 주로사용. 
- protected 같은 패키지에서 접근가능. +"상속관계(패키지가 달라도 가능)
 
- (default, friendly)
- private
=> 같은 클래스에 접근가능
   ( 상송관계도 부모의 private 멤버를 자식이 접근 불가)
=>인스턴스 변수에 주로 사용
   ( 데이터 보호 이유, 메소드 통해서 인수턴수 변수에 접근 가능)

예> private Strign name;
    plevate int = age;
    외부에서 접근할 필요가 없는 로컬메소드 사용시.
예> public class Test{
 public void a(){ local();}
 public void b(){}

 private void local(){} //Test클래스에서만 사용가능
  
}

-> 은닉화 은닉화 구현시가 이용된다.

 

블로그 이미지

itworldkorea

IT korea가 세상(world)을 변화시킨다.

,