📑
객체지향프로그래밍의 특징
- 캡슐화: 데이터(필드)와 동작(메소드)를 하나로 묶고 실제 구현 내용을 외부에 감추는 것. 외부의 잘못된 사용으로 인해 객체가 손상되지 않도록 보호. 접근 제한자를 사용함.
더보기
더보기
* 접근 제한자
- public: public으로 설정된 클래스, 변수, 메소드는 외부 어디에서나 접근 가능. (다른 패키지에서도 접근 가능)
- protected: 이 클래스를 상속하는 자식 클래스와 같은 패키지에 있는 클래스에서 접근 가능.
- private: 클래스 내부에서는 자유롭게 접근이 가능하지만, 외부에서는 접근이 불가능.
- default: 동일한 패키지에서 접근 가능,
- 상속: 상위객체(부모객체)의 필드와 메소드를 하위객체(자식객체)에게 물려줌.
- 다형성: 프로그램을 구성하는 객체를 바꾸면 프로그램 실행 성능이 다르게 나올 수 있음. 자동 타입 변환과 재정의 기술 사용. → 상속과 인터페이스 구현으로 얻을 수 있음.
객체와 클래스
- 클래스 선언: public class 클래스명{ } 과 같이 작성. 클래스명의 첫 문자는 대문자. 캐멀스타일로 작성. 특수문자 $, _를 포함할 수 있음.이 때, 소스 파일명과 동일한 클래스만 공개 클래스(public class)로 선언할 수 있음. 따라서 특별한 이유가 없다면 소스 파일 하나당 클래스 하나를 선언하는 것이 좋음.
- 복수 개의 클래스 선언이 포함된 소스 파일을 컴파일하면 클래스 선언 수만큼의 바이트코드 파일(.class)가 생성됨.
- 객체생성: 객체 생성 연산자인 new 사용. 클래스 변수 = new 클래스();
- 클래스의 용도
더보기
더보기
- 라이브러리 클래스: 실행할 수 없으며 다른 클래스에서 이용
- 실행 클래스: main()메소드를 가지고 있는 실행 가능한 클래스
일반적으로 자바 프로그램은 하나의 실행 클래스와 여러 개의 라이브러리 클래스들로 구성됨. 실행 클래스는 실행하면서 라이브러리 클래스를 내부에서 이용함.
SportsCar.java
package ch06.sec03;
public class SportsCar{
...
}
class Tire{
...
} //Tire도 public클래스로 선언하고 싶다면 Tire.java 소스 파일을 별도로 생성해야함.
필드
- 선언: 타입 필드명 [ = 초기값 ] ;
필드명은 첫 문자를 소문자로 하되, 캐멀스타일로 작성.
타입은 기본타입과 참조타입 모두 가능.
*반드시 클래스 블록에서 선언되어야만 필드 선언이 됨.
- 객체 내부의 생성자와 메소드 내부에서 사용. 객체 외부에서도 접근해서 사용할 수 있음.
- 객체 접근 연산자 도트(.)를 사용해 필드나 메소드에 접근. 참조 변수 뒤에 붙임.
ex. Car 클래스의 필드
class Car {
String model = "그랜저"; //고유 데이터 필드
int speed = 300; //상태 데이터 필드
boolean start = true; //상태 데이터 필드
Tire tire = new Tire(); //부품 객체 필드
초기값을 제공하지 않을 경우 필드는 객체 생성 시 자동으로 기본값으로 초기화됨.
필드와 (로컬)변수의 차이점