SL-275 Day2

2007. 1. 23. 17:35

2일차

ch.V Arrays

<Array>
같은 데이터타입을 가지는 여러값들이 하나의 변수를 통해서 한방에 처리되는  것.

★★★ 3단계 문법
※syntax
①선언 -> int[] i; or int i[]; // "int[]" : 데이터 타입 "i": reference variable
 ★선언할때 사이즈를 명시하면 안된다
②생성 -> i = new int[3]; //
 ★ new 사용
 ★ new 다음 []에 size 명시
 new로 메모리 할당시 묵시적 초기화가 이루어진다.
 int[] i = new int[3];
 ★Memory 도식화

사용자 삽입 이미지








③초기화
int[] i = {13, 27, 38}; // ";"은 생성자 호출이라 볼 수 있다

sample.
1. int 타입의 배열 생성(사이즈는 3)  -> int[] arr = new int[3];
2. 각각의 칸에 적당한 값으로 초기화   -> arr[0] = 1; arr[1] = 2; arr[2] = 3;
3. for 문을 이용해서 값들을 콘솔창에 출력 -> for (int i = 0; i < arr.length; i++) System.out.println("arr["+i+"]:"+arr[i]);

ch.VI Class Design
<Inheritance>
 [Sub, Child] class

사용자 삽입 이미지










1. Abstraction(추상화, 일반화)
다양한 Sub Class들 사이에서 공통적인 성질을 추출. 이 공통적인 성질을 일반적으로 갖는 독자적인 모듈을 윗단에 상정하는 것.
 [Super, Parent] Class

사용자 삽입 이미지








상속: 부모가 가진 모든것(member)이 자식에게 물려짐 + 자기자신만의 member 추가
  cf. Constructor는 member가 아니다

ex)
class Manager extends Employee{
 String dept;
}

class Engineer extends Employee {
 String tech;
}

<Polymophism> -> Method Overriding / Method Overloading
부모type으로 자식 객체 생성

Clothes 긴팔T = new Shirt(0, 0, 0);
부모type            자식객체

<Virtual Method Invocation의 원리>
1. Compile Time Type : 부모의 메모스를 호출
2. Runtime Type : 자식의 메소드가 실행
"상속관계의 오버라이딩된 메소드에서만 발생하는 원리"

<Method Overriding의 Rule> p.6-9
0. [전제조건] 반드시 상속관계의 두 클래스 사이에서 일어남
1. Method의 선언부는 모두 일치(리턴타입, 이름, 인자값)
2. More Modifier / Less Exception (부모 보다 자식의 Access Modifier가 More Modifier 이어야 한다)
3. 구현부는...{// } 반드시 달라야 한다
   > 즉 선언부는 같지만 Method의 기능이 달라졌기에 새로운 Method의 재탄생으로 봐야한다
   > "메소드 재정의"

<Overriding의 대표적인 사례>

사용자 삽입 이미지








<Method Overloading>
1. 상속과 전혀 상관없다
2. Method 이름 같다
3. Argument List는 반드시 달라야(순서, 갯수, 타입 중 하나라도)
★★
4. return type 상관없다
"하는일은 같지만 처리하는 데이터를 달리할때"

Class Hierachy
<Object Class>
equals() - 객체가 같은지는 주소값으로 비교
toString() - 기본적으로 생략되어 있다, 그래서 주소값은 문자열로 출력된다

sample.
class 인어공주 extends 여자 implements 물고기

<Constructor> (마무리 - 상속관계에서의 생성자)

<Access Modifier>

<Exceoption>

<swich에 들어올 수 있는 자료형>
byte, short, int, char

<package>

ch.VII
<Interface>
기능중심
다중상속 지원
interface Flyer {
 [public] [static] [final] int x = 10; // public, static, final 기본적으로 생략되어 있음
 [public] [abstract] void fly();  // public, abstract 기본적으로 생략되어 있음
 void land();
 void fly();
}

추상적인 method들의 집합
interface를 상속받는 클래스는 모든 member method를 구현해주어야 한다
interface는 abstract의 set
abstract는 완전한 super 클래스로만 쓴다

구성요소
1. abstact Method
2. Constant

<static>
1. 객체를 생성하기 이전에 Memory에 올라간다
  -> 객체 생성하지않고 바로 사용해도 된다 ex) switchIt(4);  -> public static void switchIt(int x) { }
2. 생성된 객체들이 static Member를 공유
3. ex) static int j = 0; -> local로 선언될 수 없다
4. static Area 에서는 this 사용할 수 없다
5. final : "내가 마지막이야"
  final static 같이 쓴다(순서 바꿔서 static final도 가능) ex) final static int SIZE_MAX = 100; 상수를 지정하는 변수의 이름은 대문자로 한다
  final class : "상속 금지"
  final method : "overriding 금지"

Posted by 창신다이
BLOG main image
오랫동안 꿈을 그리는 사람은 마침내 그 꿈을 닮아 간다. -앙드레 말로- by 창신다이

공지사항

카테고리

분류 전체보기 (248)
공장이야기 (115)
Education (30)
회사이야기 (19)
일상 (73)

최근에 올라온 글

최근에 달린 댓글

최근에 받은 트랙백

Total :
Today : Yesterday :