이것이 자바다 Chap.11 기본 API 클래스(java)(KOR)MIN SEOK KOO이것이 자바다 익명 객체 + Chap.11 기본 API 클래스(java) 발표용 PPT.
간단하게 정리한 것.
이것이 자바다 책을 기반으로 작성한 강의용 PPT입니다.
부족한 게 많으니 쓰실 때에는 추가하셔서 쓰세요~
참고 자료 : 이것이 자바다
사진 첨부 : http://palpit.tistory.com/
이것이 자바다 Chap.14 람다식 Lambda expression(java)(KOR)MIN SEOK KOO이것이 자바다 Chap.14 람다식 Lambda expression(java) 발표용 PPT
간단하게 정리한 것.
이것이 자바다 책을 기반으로 작성한 강의용 PPT입니다.
부족한 게 많으니 쓰실 때에는 추가하셔서 쓰세요~
참고 자료 : 이것이 자바다
사진 첨부 : http://palpit.tistory.com/
9 swift 클로저1Changwon National University본 강좌에서는 클로저에 대해 알아보도록 하겠습니다. 클로저란 내부 함수와 내부 함수에 영향을 미치는 주변환경을 모두 포함한 객체로정의할 수 있습니다. 또한 클로저는 func와 함수이름이 생략된 경량의 함수객체로 클로저 표현을 통해 문장릉 짧고 간단하게 만들 수 있습니다.
Youtube
- https://youtu.be/0bIRlDCH8kU
9 swift 클로저1Changwon National University본 강좌에서는 클로저에 대해 알아보도록 하겠습니다. 클로저란 내부 함수와 내부 함수에 영향을 미치는 주변환경을 모두 포함한 객체로정의할 수 있습니다. 또한 클로저는 func와 함수이름이 생략된 경량의 함수객체로 클로저 표현을 통해 문장릉 짧고 간단하게 만들 수 있습니다.
Youtube
- https://youtu.be/0bIRlDCH8kU
1. 객체 지향 언어
사용 이유
컴퓨터가 현실세계와 최대한 비슷하게 만들어지기 위해
(속성(필드) + 기능(메소드))
특성
1. 캡슐화 : 외부객체가 접근을 못하게 함.(접근 제한자)
중요한 필드와 메소드를 보호
2. 상속(상위객체 + 하위객체) : 중복 코드를 줄여서 빨리 설계.
3. 다형성 : 같은 타입이지만 실행 결과가 다양한 객체를 이용.
e.g. 컴퓨터1, 컴퓨터2
객체와 클래스
설계도(클래스) -> 객체(인스턴스)
2. 객체 생성
new 연산자 : 힙영역에 객체 생성 후 객체의 주소를 리턴
(주소를 변수로 받아와서 사용)
클래스 선언
public class Student{
}
e.g. 변수 = new 클래스();
3. 클래스 구성(필드, 생성자, 메소드)
필드
: 데이터 저장, 변수와 비슷하지만 변수라고 부르지 않는다.
: 자동 디폴트(0) 초기화
: 어디서든 선언 가능
cf) byte, char
※ 필드 vs 변수
필드는 생성자와 메소드 전체에서 사용되고 객체가 소멸되지 않으
면 소멸안됨.
변수는 생성자와 메소드 안에서만 사용되고 종료되면 소멸.
※필드 초기화
(1) 필드 선언 시
(2) 생성자 선언 시
※필드 사용
e.g. myCar.company;
4. 생성자
: 객체 생성시 초기화 담당.
: 필드를 초기화하거나 메소드를 호출해서 객체를 사용할 준비.
: 클래스 이름으로 되어있고 리턴 타입이 없다.
생성자 선언
public class Car{
String nation = "대한민국";//필드 초기화
String color;
Car(String c, int cc){
color = c; //생성자안에서 필드 초기화
//this.color = color;
}
}
생성자 호출해서 객체 생성
public class CarExample{
public static void main(String[] args){
Car myCar = new Car("Black", 3000);
}
}
5. 생성자 오버로딩
public class Car{
Car() { ... }
Car(String model) { ... }
Car(String model, String color) { ... }
}
Car car1 = new Car();
Car car2 = new Car("에쿠스");
Car car3 = new Car("에쿠스", "검정색");
: 생성자 다양화.
클래스 내에 같은 이름의 생성자를 여러 개 선언하는
것.
다른 생성자 호출(this())
public class Car{
String model;
Car(String model) { this(model, color, 250) }
Car(String model, String color, int maxSpeed) {
this.model = model;
}
}
6. 메소드
: 필드를 읽고 수정, 다른 객체 생성, 객체 간 데이터 전달의 수단.
※함수 vs 메소드
함수 :
반환타입 함수이름 ( 파라미터 리스트 )
{
내용
return 값;
}
메소드 : 클래스 안에서 사용되는 함수.(멤버함수)
데이터타입에 의존적인 함수.
(자바에서는 main 함수가 아니라 main 메소드)
7. 메소드 선언
리턴타입 메소드이름([매개변수선언, ...]){
//실행블록
}
※ 메소드이름
: 숫자로 시작, 특수 문자 X
(관례적으로 소문자로 작성, 혼합된 이름이면 뒤의 단어의 첫글자는 대문
자)
※ 매개 변수 선언
: 필요한 데이터를 외부로부터 받기 위해 사용.
cf) 매개 변수의 수를 모를 경우 : 배열 타입으로 선언 또는 ...을 사용
(메소드 호출 시 배열로 넣을 필요가 없이 리스트로 나열)
※ 리턴값
: 리턴값이 없는 메소드 return ;
int sum1(int[] values) {...}
int sum2(int ... values) {...}
int result1 = sum1(new int[] {1, 2, 3, 4, 5});
int result2 = sum2(1, 2, 3, 4, 5);
8. 메소드 호출
: 클래스 내/외부의 호출로 나뉨.
void 외부메소드(){
Car car = new Car(); //객체생성
car.run();
}
void 내부메소드(){
run();
}
void run(){ ... }
메소드 오버로딩
int plus(int x, int y){
int result = x + y;
return result;
}
double plus(double x, double y){
double result = x + y;
return result;
}
9. 인스턴스 멤버와 this
: 객체(인스턴스)를 생성해서 사용하는 필드, 메소드를 인스턴스 멤버라고 함.
public class Car{
String model;
Car(String model){
this.model = model;
}
void setModel(String model){
this.model = model;
}
}
※this
Car myCar = new Car();
myCar.gas = 10;
myCar.setSpeed(60);
Car myCar = new Car();
myCar.setModel("벤츠");
Car myCar = new Car("벤츠");
10. 정적 멤버와 Static
정적(static) 멤버(클래스 멤버)
: 클래스에 고정된 멤버로서 객체를 생성하지 않고 사용할 수 있는 필드와 메소
드.
※인스턴스 필드 vs 정적 필드
: 객체마다 다른 값을 가지는 데이터면 인스턴스 필드.
공용적인 데이터면 정적 필드.
public class Calculator {
String color;
static double pi = 3.14159;
}
※인스턴스 메소드 vs 정적 메소드
: 인스턴스 필드를 이용한다면 인스턴스 메소드.
인스턴스 필드를 이용하지 않는다면 정적 메소드.
public class Calculator {
String color;
void setColor(String color) {this.color = color;}
static int plus(int x, int y) { return x+y;}
}
11. 정적 필드 초기화
: (1) 선언 시 (2) 정적 블록(복잡한 초기화 작업)
public class Television {
static String model = "LCD";
static String info;
static {
info = company + "-" + model;
}
}
※주의사항
: 정적 메소드, 정적 블록 내부에 인스턴스 필드나 메소드를 사용할수없다.
(정적 메소드나 정적 블록이 객체가 없어도 실행되기 때문에)
=> this도 사용 불가
해결=> 객체를 생성한 후 사용.(main도 마찬가지)
int field1;
static void Method() {
field1 = 10; //Error
}
static void Method(){
ClassName obj = new ClassName();
obj.field1 = 10;
}
12. Singleton (싱글톤)
: 단 하나의 객체만 만들어야 할때 외부에서 new 연산자로 생성자를
호출 못하게 막는 방법.
pulic class 클래스 {
//정적 필드
private static 클래스 singleton = new 클래스();
//생성자
private 클래스() {}
//정적 메소드
static 클래스 getInstance() {
return singleton;
}
}
클래스 변수1 = 클래스.getInstance();
클래스 변수2 = 클래스.getInstance();
클래스 변수1 = new 클래스();
클래스 변수2 = new 클래스(); //컴파일에러
13. Final 필드
: 프로그램 실행 도중에 수정할 수 없다.
=> 초기화 : 1) 필드 선언시 2) 생성자 선언
시
=> e.g. 주민등록번호
※상수(static final)
e.q. 원주율, 지구의 둘레.
final 타입 필드;
static final 타입 필드;
15. 패키지 선언
package 상위패키지.하위패키지.
※다른 패키지에 속하는 클래스를 사용하려면
(1) 패키지와 클래스 기술
(2) import
(1) com.hankook.Tire tire = new com.hankook.Tire();
(2) import com.hankook.Tire; //import com.hankook.*;
16. 접근 제한자
: 데이터 보호, 객체 생성을 막기 위해서, 특정 메소드를 호출 못하게 하기 위해서
17. Getter/Setter Method
: 객체의 무결성이 깨지는 것을 막기 위해서 객체 지향 프로그래밍에서는
메소드를 통해서 데이터를 변경하는 방법을 선호.
e.g. 자동차의 속도는 음수가 될 수 없는데, 외부에서 음수로 변경하면
객체의 무결성이 깨진다.
private 타입 fieldName;
//Getter
public 리턴타입 getFieldName(){
return fieldName;
}
//Setter
public void setFieldName(타입 fieldName) {
this.fieldName = fieldName;
}
18. 어노테이션(Annotation)
: 컴파일 과정과 실행 과정에서 코드를 어떻게 컴파일하고 처리할것
인지를 알려주는 정보이다.
e.g. @AnnotationName
※용도
(1) 컴파일러에게 코드 문법 에러를 체크하도록 정보를 제공.
(2) 소프트웨어 개발 툴이 빌드나 배치 시 코드를 자동르로 생성할 수 있
도록 정보를 제공.
(3) 실행시 (런타임 시) 특정 기능을 실행하도록 정보를 제공.