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클래스에서만 사용가능
}
-> 은닉화 은닉화 구현시가 이용된다.
'프로그래밍 > Java' 카테고리의 다른 글
자바 [JAVA] 7일차 수업 ( 인터페이스, 추상클래스) (0) | 2017.08.18 |
---|---|
자바 [JAVA] 6일차 수업 (다형성) (0) | 2017.08.18 |
자바 [JAVA] 4일차 수업 (this키워드,패키지,import 문,배열,) (0) | 2017.08.18 |
자바 [JAVA] 3일차 수업 객체,클래스 ,메소드,생성자 (0) | 2017.08.18 |
자바 [JAVA] 2일차 수업 ( Scanner 문) (0) | 2017.08.18 |