11. interface

(1) 클래스를 만들기 위한 설계도

(2) 표준화,일관성

(3) 순수(완전)추상 클래스

// 100퍼센트 추상메서드

(4) 다중 상속 지원

(5) 클래스에게 상속할 경우 implements 키워드를 사용.

(6) 인터페이스에게 상속할 경우 extends 키워드 사용

'Java' 카테고리의 다른 글

[JAVA 정리] 13. Generic  (0) 2017.06.24
[JAVA 정리] 12. 유용한 클래스들 (java.lang, java.util, java.text)  (0) 2017.06.24
[JAVA 정리] 10. Package  (0) 2017.06.24
[JAVA 정리] 9. 클래스3  (0) 2017.06.24
[JAVA 정리] 8. 클래스2  (0) 2017.06.24

10. Package

(1) 묶음(클래스)

(2) 목적

(3) 쟤료:폴더

(4) 패키지는 상위폴더에서 실행해야함.

Java BookPack.BookTest

(5) classpath

(6) jar

(7) 패키지 컴파일

(8) java.lang

(9) src zip


Protected 

패키지 안에서 외부로부터의 접근을 막아준다.

'Java' 카테고리의 다른 글

[JAVA 정리] 12. 유용한 클래스들 (java.lang, java.util, java.text)  (0) 2017.06.24
[JAVA 정리] 11. Interface  (0) 2017.06.24
[JAVA 정리] 9. 클래스3  (0) 2017.06.24
[JAVA 정리] 8. 클래스2  (0) 2017.06.24
[JAVA 정리] 7. Array 배열  (0) 2017.06.24

prjClass3.zip


9. 클래스 3 :상속

(1) 상속 예외

   1)생성자

   2) private

(2) 부모의 생성자를 호출 할 수 있다.

Super(….) – this(…)

단 주소만 다름

This 현재 자신의 주소 super 은 부모의 주소

Super.변수 또는 super.메서드() – this.변수 또는 메서드

Super도 참조 변수다

반드시 생성자 안에서만 호출 가능 일반 메서드 에서는 호출 불가능 

이것은 this 도 마찬가지!

"반드시 첫줄에 작성"

(3) 생성자의 호출 순서

(4) 상속은 확장의 개념이다.

(5) 자바는 단일상속만을 지원한다.

부모는 반드시 가장 기본적인 것만 가지고 있어야 된다.

- 상속 설계 과제

(6) 부모 클래스와 자식 클래스의 참조 관계

- 서로 다른 클래스는 참조할 수 없다.

- 단, 부모 자식관계는 참조 할 수 있다.

- 단, 부모만 자식을 참조 할 수 있다.

- 단, 부모는 자신이 물려준 범위 내에서만 참조가 가능하다. 

    1) 인스턴스가 결정되지 않았을 때

O - > A, B

    O(부모) A, B(자식)

A a1 = New A();

O a2 = new ?(); // 주소는 임시로 받음.

… 

A a3 = (A)a2 ; //캐스팅으로 넘겨주기.

    2) 여러 개의 자식 인스턴스를 배열로 관리하기 위해서

A a1 = new A();

B a1 = new B();

C a1 = new C();

D a1 = new D();

O o1[] = {a1, b1, c1, d1, new E()};


(7) 메서드의오버라이딩(Overriding)

메서드에서만 적용된다.

1) 재정의(부모로부터 상속받은 메서드를 고쳐서 사용)

2) 반드시 상속에서만 사용할 수 있는 문법

(8) 추상 클래스와 추상 메서드

1) 추상 클래스

 - 추상메서드를 하나 이상 가지고 있는 경우

 - abstract 키워드 사용

 - 인스턴스를 생성할 수 없다. // 자식에게만 물러줄 수 있는 용도로만 쓰겠다.

  

2) 추상 메서드

 - 내용은 없고 선언만 되어있는 메서드

Void a() {


}


Void a(); // 중괄호가 없는 건 쓸데없는 진입을 막겠다는 의미


// 혼란을 방지하기 위해서

   - Abstract 키워드 사용

Abstract void a();

//추상메서드는 앞에 Abstract 라는 키워드를 사용한다.

- 반드시 오버라이딩을 해야 한다.//이걸 상속 받는 자식클래스는


(9) final : class, method, variable

1) 변수 

Final inti=5;

I = 10;

Final int MAX_AGE = 100;

For(inti=0; i<MAX_AGE; i++) {

}



2) 메서드

Final void method(…) {

}

3) 클래스

Final class Classname{…}


(10) Object

'Java' 카테고리의 다른 글

[JAVA 정리] 11. Interface  (0) 2017.06.24
[JAVA 정리] 10. Package  (0) 2017.06.24
[JAVA 정리] 8. 클래스2  (0) 2017.06.24
[JAVA 정리] 7. Array 배열  (0) 2017.06.24
[JAVA 정리] 6. 매서드  (0) 2017.06.24

8. 클래스 2

(1) 배열의 단점을 보완하여 서로 다른 Type의 데이터를 묶음

(2) Access Modifier (접근제어 명시자) ->클래스, 메서드,변수 다 쓸수있음

1) default :생략된 형태,제한된 접근

2) public : 완전 개방

3) private :완전 폐쇄

4) protected : 제한된 폐쇄

(3) 매서드

1) 인자 전달 방식

 - 값에 의한 전달 (call by value) 

직접적으로 값만 전달 소량의 데이터 전달

 - 참조에 의한 전달(call by reference)

인스턴스의 주소전달 대량의 데이터 전달.

2) 재귀 호출(recursive call)

(4) Static

1) 인스턴스와는 상관 없이 별도의 메모리로 생성

2) 여러 인스턴스들이 공유할 수 있는 메모리

3) 클래스 변수

4) Static block

Static {

Static 변수들만 모아서 일괄적인 처리 가능

}

(5) 중첩 클래스 ( 내부 클래스)

1) static 클래스

2) 일반 클래스


* Design Pattern

- Singleton Pattern

Private, 생성자, static (새로운 Singleton Pattern을 만들 수 있다.)

Design Pattern 구현방법

  1. 절대로 외부에서 인스턴스를 만들지 못하게 한다.

  2. 클래스 내부에서 단 하나의 인스턴스를 만들게 한다.

  3. 만들어진 인스턴스를 외부에서 사용할 수 있게 한다.


prjClass2.zip


'Java' 카테고리의 다른 글

[JAVA 정리] 10. Package  (0) 2017.06.24
[JAVA 정리] 9. 클래스3  (0) 2017.06.24
[JAVA 정리] 7. Array 배열  (0) 2017.06.24
[JAVA 정리] 6. 매서드  (0) 2017.06.24
[JAVA 정리] 5. 클래스1  (0) 2017.06.24

7. Array

(1) 정의

   1) 많은 양의 데이터를 다루기 위한 방법(변수를 줄이기 위해)

   2) 같은 이름으로 정의된 연속적인 메모리 공간

int kor1, eng1, mat1;

int kor2, eng2, mat2;

int kor3, eng3, mat3;


int[] a1, a2, a3;

//배열은 반복문을 사용할 수 있음

(2) 문법

   1) 자바에서는 배열을 객체(=클래스)로 취급한다.

int[] a1 = new int[3];

int[] a2 = new int[3];

int[] a3 = new int[3];

//a1 참조변수 -> 인스턴스 해서


(3) 활용

   1) 검색

- Sequential Searching -순차검색

- Binary searching - 이분 검색

데이터의 중간위치를 구한다

해당 데이터가 찾고자 하는 데이터인지 확인.


For(int row=0; row<data.length-1; row++){

For(int col = row+1; col<data.length; col++){

If(data[row] < data[col]) // {

Int temp = data[row];

Data[row] = data[col];

Data[col]

}

}

}


2) 정렬 (오름차순,내림차순)

   (1) Swap algorithm(교체 알고리즘)

Int a = 10, b=5, c; //동시처리가 안되므로 변수 하나 더 생성

C=a;

A=b;

B=c;

   (2) 선택정렬 :기준을 하나 선택해서 정렬해 나가는 것

데이터 중 기준 선정하기(최대값/최소값, 맨끝)

->데이터값이아닌 위치를 기준

   (3) 버블정렬 :서로 이웃하는 것끼리 정렬

   (4) 삽입정렬



(4) 다차원 배월( 2차원 이상의 배열)

   1) 1차원 배열 :각각의 변수를 한 줄로 된 연속적인 공간

   2) 2차원 배열 : 1차원 배열을 하나로 합친 것

   3) 3차원 배열 : 2차원 배열을 하나로 합친 것

   4) 1차원 배열과 다차원 배열의 차이 

- 1차원 배열 :값에 직접 접근방식 (메모리에 접근)

- 다차원 배열 :주소(참조)에 의한 간접 접근


Int[] a1 = new int[3];

Int[] a2 = new int[3];

Int[] a3 = new int[3];

Int[][] = mew int[3][3];


(5) 불규칙 배열 (다차원 배열) ->동적 바인딩


Char[] name1 = {‘T’, ‘o’,‘m’};

Char[] name2 = {‘J’, ‘a’,‘n’, ‘e’};

Char[] name3 = {‘J’, ‘o’,‘h’, ‘n’, ‘s’, ‘o’, ‘n’};

Char[] name4 = {‘홍’, ‘길’,‘동’};


Char[][] names = new char[4][7];


Names[0] = new char[3];

Names[1] = new char[4];

Names[2] = new char[7];

Names[3] = new char[3];


(6) String

1) java.lang

2) 자바는 문자열을 객체로 취급한다.

3) 동일한 문자열(인스턴스)을 중복해서 생성하지 않는다.

  ->메모리 낭비를 하지 않는다.

단 new를 통해서 생성할 경우 강제로 인스턴스 생성

4)절대 수정 불가(읽기 전용)

5) StringBuffer 수정 가능


(7) CommandLine Argument(명령행 인자)

프로그램 실행할 때 넘어가는 인자.


*Scanner

 - java.util

알맹이 기능이 없고 다른 클래스의 도움을 주는 역할을 한다.


1차원배열은 노가다필요. 2차원배열은 가독성이 떨어짐.


데이터 보관 원초적인 방법

1) 변수화

장점 :쓰기편함

단점 :많은 양의 데이터 저장 x

2) 배열

장점 :많은 양의 데이터를 저장 가능

단점 :크기 정해야함( 많이 ->낭비/적음 ->부족)

같은 형식 ( 정수는 정수끼리 , 실수는 실수끼리)

삽입, 삭제 거이 불가능(데이터가 많으면 많을수록 불가능)

6. 메서드

   1) 동작(기능)을 구현하는 역할 (함수)

   2) 만드는법

반환형 메서드(…) {

기능정의

  }

   3) 사용하는 법

메서드명(…)

   4) 메서드의 호출방식

- 인자가 없는 방식

- 인자가 있는 방식

- 리턴값 (반환값)이 있는 방식


매개변수와 실인자는1대1형식,개수가 매칭되어야 한다.

   5) return

- 복귀할때 값을 반환(단 1개만 가능)

- 메서드 강제 종료 ( return밑에있는 코드는 실행 불가능)

   6) 메서드의 오버로딩(Overloading)

- 중복정의 ( 같은 이름의 메서드를 여러 개 만들 수 있다.)

- 다형성

- 매개변수의 개수,형식,순서

   7) 생성자(Constructor)

- 인스턴스(instance)를 생성해 주는 기능

- 용도 : 초기화

- 호출시점 :인스턴스를 생성할 때 만 호출 (일회용)

- 작성방법

메서드명(…) {

기능 정의

}

= >반환형이 없다. (void) 

- 메서드명은 클래스 명과 동일하게 지어야함

- 모든 클래스는 항상 기본 생성자를(인자 없는 생성자)소유

- 단,임의의 생성자(인자 있는 생성자)를 만들게 되면 더 이상 기본 생성자는 존재하지 않게 된다.


8) Garbage Collection 

- finalize(); 

이미 만들어 져있는 메소드

protected void finalize() {} = >현재 garbage collection이 호출된다는 것을 알수있다.

- 거꾸로호출 : callback



04_Class1.zip

5. 클래스

(1) 묶음 :변수,메서드

(2) 캡슐화 단위 : 편리함,보안성

(3) 단일 기능을 원칙으로 한다.

(4) 설계도(추상적) -> instance (메모리)

(5) 객체 (object)class

1) 상속성 (Inheritance) – 비용절감

2. 다형성 (Polymorphism)

3. 캡슐화 (Incapsulation) – 추상화

=> 3가지 특징 다 가지고 있어야 함.

(6) 데이터 타입

1) 기본(primitive) 데이터 타입(비객체형 데이터 타입)

 - 값을 저장

 - 정해진 양식을 사용 (8가지)

2) 객체형 데이터 타입

 - 주소를 저장

 - 클래스

3) 변수의 종류

- 선언된 위치에 따라 

클래스 :인스턴스 변수,멤버 변수, 필드

메서드:변수,지역변수

- 저장되는 내용에 따라

값 :변수

주소 : 창조 변수


4. 제어문(Control Statement)

(1) 조건문

1) if

*/

//문제! 입력받은 값이 소문자이면 소문자라고 출력하고, 

//입력받은 값이 대문자이면 대문자라고 출력하고,

//입력받은 값이 숫자이면 숫자라고 출력하고

//그 외에는 Other라고 출력하라.

/*

System.out.print("값 : ");

int result = System.in.read();

if(result >= 'a' && result <='z'){

System.out.println("소문자입니다.");

}else if(result >= 'A' && result <= 'Z'){

System.out.println("대문자입니다.");

}else if(result >= '1' && result <= '9' ){

System.out.println("숫자입니다.");

}else{

System.out.println("Other");

}

*/


//계산기 프로그램

System.out.print("첫번째 숫자를 입력해주세요.");

int num1 = System.in.read()-48;

System.in.skip(2);

System.out.print("연산자를 입력해 주세요.");

int Operator = System.in.read();

System.in.skip(2);

System.out.print("두번째 숫자를 입력해주세요.");

int num2 = System.in.read()-48;

if(Operator == '+'){

System.out.print("값의 결과는 :" +(num1+num2));

}else if(Operator == '-'){

System.out.print("값의 결과는 :" +(num1-num2));

}else if(Operator == '/') {

System.out.print("값의 결과는 :" +(num1/num2));

}else if(Operator == '*') {

System.out.print("값의 결과는 :" +(num1*num2));

}else {

System.out.print("올바른값이아닙니다.");

}


3) switch

switch(변수 또는 수식) {

case 값 :

문장;

Break;

case 값 :

문장;

Break;

case 값 :

문장;

Break;

Default :

문장 :

}


Nested if문 (중첩)

If(조건문){

If(조건문){

If(조건문){

}

}

}





(2) 반복문

1) while

While(조건식){

문장;

}


2) do while

Do{

문장;

}while(조건식);


3) for

  For(초기화;조건식;카운터)

문장;

초기화;

  For ( ;조건식;카운터)

문장;

초기화;

  For ( ;조건식;)

문장;

카운터;


4) 반복문 강제 종료

1. break :완전 종료

2. continue :임시 종료



'Java' 카테고리의 다른 글

[JAVA 정리] 6. 매서드  (0) 2017.06.24
[JAVA 정리] 5. 클래스1  (0) 2017.06.24
[JAVA 정리] 3. 연산자  (0) 2017.06.24
[JAVA 정리] 2. 데이터 타입  (0) 2017.06.24
[JAVA 정리] 1. 변수  (0) 2017.06.24

3. 연산자 (Operator)

   (1) 산술 연산자 * + - / % 

      - 증감 연산자 ++ --

   (2) 비교 연산자 <>>= <= == !=

   (3) 논리 연산자 (단락회로 연산) 

&&(and)  || (or) ! (not)

A B A&&B A||B !A A^B

T T     T           T F F

T F     F         T F T

F T     F         T T T

F F     F         F T F


   (4) 대입(치환) 연산자 = += -= /= (누적 연산자)

   (5) 비트 연산자 

&and

| or

^ xor

>>right shift

<<left shift

~  보수

>>>right shift


(6) 캐스팅 연산자 (강제 형변환 연산자)

(DataType)변수

1) 명시적 캐스팅

2) 묵시적 캐스팅

(7) 삼항 연산자 (조건식) 

(조건식) ?참 :거짓


문제

1. 두 개의 double 변수를 이용해서 각각 갤런과리터값을 저장하고,갤런값을 해당하는 리터값으로 바꿔보자.

예시 ) 4갤런 = ?리터

double gal = 4;

double l = 3.78;

gal = l * gal; 

System.out.println("문제 1번 4gal L 값은 : " + gal + "L");


2. 달의 중력은 지구 중력의 17%정도이다.달에서의 당신의 체중을 계산하는 프로그램을 작성하여라.

doubledar = 0.17;

double Me = 50.5;

Me = Me * dar;

System.out.println("문제 2번 당신의 몸무게는 달에서 : " + Me + "kg 이다." );


3. 번개가 얼마나 먼곳에서 발생했나?

(번개 소리를 들은 사람이 번개가 치는 곳에서부터 몇 피트 정도 떨어져 있는가를 계산하라.소리는 공기중을 약 1,100피트/초의 속도로 진행한다. –번개를 본 시각과 천둥소리를 들은 시각사이의 시간을 알면 거리를 계산할 수 있다.여기서는 7.2초로 가정하자.)

double Pit = 1100;

double Bun = 7.2;

Pit = Pit*Bun;

System.out.println("문제 3번 당신은 번개가 친곳에서부터  : " + Pit + " 피트 떨어진 곳에 있다." );

2. 데이터 타입

정수형     Byte     1byte

Short       2byte

Int       4byte

Long       8byte

실수형     Float     4byte

Double     8byte

문자형     Char     2byte

논리형    Boolean     1byte


논리형은 참 거짓으로 나눈다 true / false

문자와 문자열의 차이

문자                           문자열

1글자                          1글자 이상

크기가 정해져있다. 크기가 정해져 있지 않다.

변수 선언 가능         변수 선언 불가

반드시 ‘’ 사용         반드시 “” 사용



+ Recent posts