<Java> 4. 클래스와 객체

정지민·2023년 9월 28일

Java

목록 보기
2/12

절차지향언어

  • 함수기반
  • 데이터를 먼저 기술하고 이를 조작하는 함수 만듦

객체지향언어

  • 클래스, 객체 기반
  • 데이터와 함수를 하나로 묶어줌

객체지향언어 특징

  • 추상화: 공통된 속성 추출
  • 캡슐화: 연관된 데이터와 알고리즘 묶음
  • 정보은닉: 인터페이스만 드러내고 내부구현 숨김
  • 상속성: 특정 객체 성격을 다른 객체로 상속
  • 다형성: 한 형태로 보이나 다른 역할 가능

객체

  • 데이터+알고리즘

객체 구성요소

  • 변수 - 정적
  • 함수 - 동적

클래스

  • 객체들의 공통적 특징에 대한 서술, 껍데기일 뿐

클래스 정의

  • 멤버필드 : 변수, 상수
    선언과 동시에 값 초기화 가능, 초기값 지정하지 않으면 0으로
  • 메서드

클래스 vs 객체

  • 클래스는 객체를 만들기위한 틀이며 객체의 속성과 행위를 추상적으로 정의함
  • 객체는 해당 클래스의 구체적인 실례로, 같은 클래스의 객체는 속성에 고유한 값을 지닐 수 있고 동일한 행동을 할 수 있다.

멤버필드

{접근제한} {static} <자료형> <식별자>;
  • 접근제한 : 각 멤버마다 따로 기술, public 등
  • instance 멤버 필드: 디폴트값, 별도의 메모리 할당, 고유의 속성값 저장
  • static 멤버 필드: 모든 객체가 공유, 프로그램 시작시 메모리 할당, 종료될때까지 유지

메서드

  • 객체가 수행할 수 있는 동작 정의
  • 멤버필드를 이용한 연산
  • 억세스 메서드 : getter / setter
  • 클래스 정의 안에 메서드의 구현부를 모두 기술
{접근제한} {static} <반환형> <메서드명> ({매개변수1},...,{매개변수n}){
	문장1;
    문장2;
}
  • 접근제한: public은 가장 허용적
  • static: 객체 생성 없이도 호출 가능 ex) main
  • 반환처리: return / 없는경우 반환형에 void
  • 인수들은 순서대로 각각의 매개변수로 받음
  • 메서드를 포함하는 클래스의 멤버들도 참조 가능

메서드의 호출

  • 객체에게 지정된 행위의 수행을 요청
[변수=] 객체명. 메소드명(인수1,...,인수n);
public class Circle {
	double radius;
    
    double getCircumference(){
    	return 2*3.14*radius;
        }
    double getArea(){
    	return 3;14*radius;
}

동적 메모리 할당

  • new 연산자 사용
    - 필요 크기를 자동으로 계산
    - 동적할당된 영역의 참조값을 결과값으로 가짐

  • 참조 자료형 변수에 실제 값에 대한 저장공간을 할당받기 위해 필요

  • 가비지 컬렉션 : 더 이상 참조되지 않는 동적 할당 메모리는 가비지 컬렉터에 의해 자동으로 회수

객체의 생성과 멤버 접근

  • 참조변수의 선언
    Circle c1;
  • 선언된 변수에 객체를 생성
    c1 = new Circle();

  • 멤버 접근
    c1.redius=1;
    double area = c1.getArea();

0개의 댓글