클래스
속성
- 멤버변수 == 인스턴스 변수
- 얼굴, 다리 , 꼬리, 소리 갯수
기능
- method == 인스턴스 method, 클래스 method (구분 짓는 방법 : static)
- static 이 붙은 것은 객체화 시키지 않아도 됨
객체
- 클래스를 실체화 시켜 놓은 것
- 클래스를 객체(인스턴스)화 시킨다.
- 객체 == 인스턴스
사과장수
구매자에게 사과를 파는 행위(1. 클래스-seller)
속성 - 사과, 돈
구매자 - 판매자에게 사과를 사는 행위(2. 클래스-buyer)
속성 - 돈, 사과
사과가 떨어 지면 입고시켜주는 행위
속성 - 사과, 돈
판매자와 구매자를 연결시켜주는 행위(클래스- mart)
속성 - 판매자, 구매자
마트가 여러개 있음(클래스 - 시장)
시장에는 마트만 존재 다른 속성이 필요 없음(마트에 다 있으므로)
실제로 구현하기 쉽지 않음 -> 끊임없이 고민(구조화)해봐야 됨.. 객체가 뭐일까...
-> 코딩 해보려니 깐 안되.. 잘못된 도출.. 다시 생각해봐.. -> 절차지향언어 생각 버려야 되..
* refactoring
- C 처럼 만들어진 자바파일 하나를 구조적으로 하나씩 분리시키는 것-쉽지 않음)
* java 기술 면접
- 객체지향이 뭐냐? 객체, 상속, 정보은닉, 캡슐화, 추상화, 다형성을 지원하는 언어입니다.
추상화
1. 얼음을 간다.
2. 우유를 넣는다.
3. 팥을 넣는다
3. 토핑을 한다.
만든다 method를호출하면 1,2,3,4를 차례로 실행하는 것
상속
- 클래스 간의 트리 조를 만들기 위한 수단
- C 클래스 - (상속-C클래스 포함)D - (상속- D 클래스 포함)E
reference type 들은 new를 사용해 인스턴스(객체)화 시켜야 함
method 오버로딩
- 똑같은 method 인데 파라미터(매개변수)가 다른 것
method 오버라이딩
- 상속 관계에서 상속받은 서브 클래스에서 재구현한 것
final
- 한번만 데이터를 넣을 수 있음, 절대 값 못 바꿈, 제일 위에 씀
- final이 붙으면 변수 명은 모조리 대문자 사용 해야 함
Class의 접근 제한자 (private)
- 모든 멤버변수는 이유 불문하고 pribate 접근 제어 지시자를 가진다.
- private 접근 제어 지시자를 가지는 멤버변수는 setter/getter를 통해 접근한다.
- setter/getter 가 필요한 이유 -> 고의적인 값 변경을 막기 위한 Filter
getter, setter
- vaildation check를 위해
- setName, getName 이름 절대 바꾸지마, 이렇게 사용해야 함 나중에 스프링에서 고생함
ex)
public String getName(){
if(this.name == null) // null check를 위해
return " ";
return this.name;
기본적으로 정보은닉이 되어야 함 -> 멤버변수에 private 붙여줘야 되 -> 악의적인 편집을 막기 위해
-> 접근하기 위해 getter, setter 만듬 -> setter에 필터링 걸어서 악의적인 편집 방지, getter를 통해 데이터를 가져 올 수 있음
public Dog(String name, String sound){
this.name = name; // setName(name);를 사용해!!
this.sound = sound;
}
getter, setter 자동 생성
source -> generate getters and setters
method는 똑같은 이름의 똑같은 매개변수 가진 것을 만들 수 없으나, 생성자는 가능하다.
this 사용하는 이유
- 파라미터로 넘어온 이름과 구분 짓기 위해
- 파라미터(매개변수) 이름이 다르면 this 사용 안 해도 됨.
public Dog(String name){
this.name = name;
}
public Dog(String n){
name = n;
}
생성자
- 리턴 타입이 클래스인 무명 메소드
- 파라미터가 없는 생성자를 기본으로 생성한다. 단, 파라미터가 존재하는 생성자를 만들 때엔 기본 생성자는 사라진다.
- 기본 생성자 추가 생성 필요
- new키워드를 만나고 뒤에 클래스명과 ()를 만났을 때 호출
- 오버로딩이 가능해서 여러 개 생성자 가능
- 생성자도 private이 가능
스캐너, 랜덤 -> 클래스와 동일한 이름의 method 제공 -> 생성자 -> 디폴트 생성자를 만들어주기 때문에
만들지 않아도 가능
primitive type (정수, 실수, 문자, 논리)
- 값을 저장
정수: byte, short. *int, long,
실수: *double, float,
문자: char,
논리: *boolean- 정말 많이 쓰임
reference type
- 메모리 주소를 저장
- 인스턴스의 값이 바뀔 수 있음
toString
- 모든 레퍼런스 타입에서는 .toString을 호출하게 되어있음
- 각 클래스 내부에 모든 값을 저장하고 있는 toString이라는 메소드가 내부 선언되어 있음.
- 한 클래스에서 다른 클래스의 값을 가져올 때 값이 너무 많을 경우 하나 하나 가져오기 귀찮아서
- 임의의 toString 함수를 생성하여 다른 클래스에 있는 원하는 값들을 받아 올 수 있음
public String toString(){
String result = "";
result +=this.name + "\n";
result +=this.sound;
return result;
}
'IT > Daily Record' 카테고리의 다른 글
[Java 2015. 01. 23 금] if, switch (0) | 2015.04.06 |
---|---|
[Java 2015. 01. 22 목] format 형식, method, memory (0) | 2015.04.06 |
[Java 2015. 01. 21 수] svn 설치, method, 반복문, if (0) | 2015.04.05 |
[Java 2015. 01. 20 화] 변수, 접미사 (0) | 2015.04.05 |
[Java 2015. 01. 19 월] JDK 설치 및 java tool 설치 (0) | 2015.04.05 |