객체지향 프로그래밍: 부품 객체를 먼저 만들고 이것들을 하나씩 조립해 완성된 프로그램을 만드는 기법.(따로따로->다같이 행동)
<-> 절차지향 프로그래밍 : 순서대로 실행되는 것.
특성: 버튼들
행동: 버튼 누르면 벌어지는 것들.
객체:물리적으로 존재하는 것. 추상적인 것들 중 자신의 속성과 동작을 가지는 모든 것.
객체 상호작용:서로 간 기능(동작)을 이용하고 데이터를 주고받음.
1.집합 관계(완성품, 부품) / 자동차-타이어,엔진,핸들
2.사용 관계(객체가 다른 객체 이용) / 사람-자동차
3.상속 관계 (종류와 구체적인 사물 객체 관계)/ 기계-자동차
사용방법을 알려주고 내부 구성은 숨기는 방식.(자동차 운전방식만 알려주고 자동차가 어떻게 작동되는지, 엔진은 어떻게 작동되는지 등을 안 알려준다.)
객체가 노출되 제공하는 부분만 이용가능.
상위(부모) 객체의 필드(특성)와 메서드(행동)를 하위(자식)객체에게 물려주는 행위
같은 타입이지만 실행 결과가 다양한 객체를 대입할 수 있는 성질.
타이어 -> 타이어 종류 다양 / 다양한 형태로 출력 가능.
키보드 -> 종류 다양
클래스 : 설계도/설명서/레시피
클래스는 객체를 생성하기 위한 필드와 메소드가 정의되어있다.
인스턴스 : 클래스로부터 만들어진 객체를 해당 클래스의 인스턴스라고 한다.
하나의 클래스로부터 여러 개의 인스턴스 만들 수 있다.
설계도를 통해 만드는 것 -> 객체화 인스턴스화
객체(object)=인스턴스(instance) 70-80%비슷. 섞어쓰는 편.
붕어빵(객체) 붕어빵틀(클래스)
붕어빵틀이 없으면 붕어빵 만들 수 없다.
소스파일 생성: 클래스이름.java(대소문자 주의)
public class 클래스이름{
....
}
-컴파일-> 클래스이름.class
소스 파일 당 하나의 클래스를 선언하는 것이 관례
소스파일이름과 동일한 클래스만 public으로 선언 가능.
선언한 개수만큼 바이트 코드 생성됨
new 클래스();
클래스()는 생성자를 호출하는 코드
생성된 객체는 힙 메모리 영역에 생성
new 연산자는 객체를 생성한 후, 객체 생성 번지 리턴
new 연산자에 의해 리턴된 객체의 번지 저장(참조 타입 변수)
힙 영역의 객체를 사용하기 위해 사용
클래스 변수 =new클래스();
자체적으로 실행되지 않음
다른 클래스에서 이용할 목적으로 만든 클래스
main()메소드를 가지고 있는 클래스로 실행할 목적으로 만든 클래스
객체의 데이터가 저장됨
초기화 역할
객체 생성시 자동 실행되는 메서드
함수라고도 함. 객체의 동작에 해당하는 실행 블록
함수: 혼자 동작 가능
메소드: 클래스에 포함되어 있음
제작회사 모델 색깔 최고 속도
자동차 크기, 색상, 연식 , 연료, 크기 등
타입 필드[=초기값]
이제까지 변수 선언과 같다.
멤버변수의 사용-> 메서드 안에서 사용해야 한다.
초기값 지정되지 않은 필드는 생성시 초기값으로 됨.
필드 값을 읽고, 변경하는 작업.
객체 내부 : "필드이름"(기존 방법 그대로)으로 접근
객체 외부 : "변수.필드이름"으로 접근(객체명.변수명)
public class Main {
public static void main(String[] args) {
Circle pizza;
pizza = new Circle();
pizza.radius=10;
pizza.name="자바피자";
double area= pizza.getArea();
System.out.println(pizza.name+"의 면적은 "+area);
Circle donut = new Circle();
donut.radius=2;
donut.name="자바도넛";
area= donut.getArea();
System.out.println(donut.name+"의 면적은 "+area);
}
}
new 연산자에 의해 호출되어 객체의 초기화 담당
new 클래스();
멤버변수의 기본값 설정
필드의 값 설정
메소드 호출해 객체를 사용할 수 있도록 준비하는 역할 수행.
:객체의 동작(기능)
원하는 결과를 얻기 위한 소스코드의 묶음.
리턴 타입 메소드 이름 ([매개변수 선언,...]){
....실행할 코드 작성...
}
이름 - 자바의 식별자 규칙을 지켜가면서 만듦
단어의 첫글자는 대문자 나머지는 소문자. 카멜명명법사용