JAVA - 객체지향프로그래밍(필드, 생성자)

2022. 4. 13. 18:29·STUDY/JAVA
반응형
 OPP(객체지향 프로그래밍) ? 
    부품에 해당하는 객체를 먼저 만들고, 객체를 조립해 프로그램을 완성하는 기법
    완성품 객체를 모델링하고, 집합관계에 있는 부품 객체와 사용 관계에 있는 객체를 하나씩 설계 한 후 조립

 

객체

ⓐ 속성 (=field)

ⓑ 동작 (=method)

 

객체모델링(Object Modeling) : 현실세계의 객체를 소프트웨어 객체로 설계하는 것

 

객체가 다른 객체의 기능을 이용하는 것 = method 호출

객체에 도트연산자(.)을 붙이고 메소드를 메소드 이름을 기술

리턴값 = 객체.메소드(매개값1, 매개값2, ....)

 

객체간의 관계

대부분의 객체는 다른 객체와 관계를 맺고 있다.

ⓐ 집합관계 : 객체는 하나는 부품, 하나는 완성품에 해당

ⓑ 상속관계 : 부모객체를 기반으로 자식객체를 생성

ⓒ 사용관계 : 객체간의 상호작용(객체가 메소드를 호출)

 

객체지향 프로그래밍의 특징

1. 캡슐화

 : 객체의 필드, 메소드를 하나로 묶고, 실제 구현 내용을 감추는 것

   외부객체는 객체내부의 구조를 알지 못하며, 객체가 노출해서 제공하는 필드와 메소드만 이용 가능

   외부의 잘못된 사용으로 객체가 손상되지 않게 하기 위해 사용  => 접근 제한자 사용

 

2. 상속

  : 상위객체가 가지고 있는 필드와 메소드를 하위 객체가 사용할 수 있도록 해줌

    상위객체를 재사용 해서 하위 객체를 쉽고 빨리 설계

    반복된 코드의 중복을 줄여줌

    상위개체의 수정 > 모든 하위 객체들의 수정  >> 유지보수 시간을 최소화

 

3. 다형성

  : 같은 타입이지만 실행 결과가 다양한 객체를 이용할 수 있는 성질

 

객체와 클래스

클래스(설계도) ⊃ 필드&메소드

클래스로 만들어진 객체 = 인스턴스

 

클래스 선언

사용하고자 하는 객체를 구상했다면 그 객체의 대표이름을 하나 결정하고 이것을 클래스 이름으로 한다.

                         |                                        |

                      자동차                                 Car

 

클래스 이름을 정했다면 "Car.java"로 소스 파일을 생성

소스 파일을 생성했다면 소스파일을 열고 클래스를 선언해준다.

public class Car{

}

public class 는 클래스를 선언할 때 사용

일반적으로는 소스 파일당 하나의 클래스를 선언, 하지만 두 개 이상의 클래스 선언도 가능함

public class Car{

}

class Person {

}

두개 이상의 클래스가 선언된 소스파일을 컴파일 하면 바이트 코드 파일은 클래스를 선언한 개수만큼 생김

위 코드를 컴파일하면 Car.class, Person.class 두 가지가 생성됨

파일 이름과 동일한 이름의 클래스에만 public 접근 제한자 사용 가능

 

객체 생성과 클래스 변수

컴파일을 하면 설계도 만들어진 상태.

클래스로부터 객체를 생성하려면 new 연산자를 사용

new 클래스();

new 뒤에는 클래스(); 형식의 생성자가 옴

new 연산자로 생성된 객체는 힙 영역에 생성되고, 객체의 주소를 리턴함

 

클래스의 구성멤버

ⓐ 필드 : 객체의 데이터가 저장되는 곳                     int fieldName;

      생성자와 메소드 전체에서 사용되며 객체가 소멸되지 않는 한 객체와 함께 종료됨

     != 변수(생성자와 메소드 내에서만 사용되고 생성자와 메소드가 실행 종료되면 자동 소멸)

public class Car{
 //필드
 String company = "kia";
 String color = "black";
 int MaxSpeed = 350;
 }

     

ⓑ 생성자 : 객체 생성 시 초기화 역할 담당                ClassName() {.... }

    new 연산자로 호출되는 { }블록

* 생성자 오버로딩(OverLoading)

   : 매개 변수를 달리하는 같은 이름의 생성자를 여러개 선언 하는 것

 * 주의할 점은 매개 변수의 타입, 개수, 선언된 순서가 똑같을 경우,

   매개변수 이름만 바꾸는 것은 생성자 오버로딩이 아님

 

* this()

 생성자 오버로딩이 많아질 경우 생성자 간의 중복된 코드가 발생할 수 있다.

 생성자에서 다른 생성자를 호출할 때에는 this() 코드를 사용함

  this() 는 자신의 다른 생성자를 호출하는 코드로 반드시 생성자의 첫 줄에서만 허용된다.

 

 

 

반응형
저작자표시 (새창열림)

'STUDY > JAVA' 카테고리의 다른 글

JAVA - 정적멤버와 static & 싱글톤(singleton)  (0) 2022.04.18
JAVA - 메소드  (0) 2022.04.18
JAVA - 열거타입  (0) 2022.04.13
JAVA - 향상된 for문  (0) 2022.04.13
JAVA - 다차원 배열  (0) 2022.04.13
'STUDY/JAVA' 카테고리의 다른 글
  • JAVA - 정적멤버와 static & 싱글톤(singleton)
  • JAVA - 메소드
  • JAVA - 열거타입
  • JAVA - 향상된 for문
3unB
3unB
  • 3unB
    ILLILI
    3unB
  • 전체
    오늘
    어제
    • 분류 전체보기 (158)
      • STUDY (107)
        • JAVA (30)
        • SPRING (29)
        • JSP (11)
        • DATABASE (19)
        • HTML (0)
        • CSS (4)
        • GITHUB (2)
        • ETC (4)
        • 자격증 (1)
        • ERROR (6)
      • PROJECT (6)
        • Personal_Project 01 - commu.. (1)
        • TeamProject - JOINUS (4)
      • EUNB (30)
        • 맛집 (27)
        • 여행 (3)
        • 전세사기 (0)
      • 오블완챌린지 ++ (11)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • 짱민지
    • 아랄이
  • 공지사항

  • 인기 글

  • 태그

    Database
    인제 고향집
    망미 조용한 카페
    오블완
    전포 데이트
    전포동 맛집
    콩콩팥팥 맛집
    속초 중앙시장 감자전
    티스토리챌린지
    전포 신상 맛집
    배열 한 컬럼에 넣기
    망미 테린느
    속초 숙소 내돈내산
    망미 카페
    전포 오꼬노미야끼
    속초 해변 숙소
    oracle
    센텀 신세계백화점 팝업
    전포 맛집
    전포 밥집
    alter
    전포동 카페
    전포동 핫플
    서면 설야멱
    서면 맛집
    콩콩팥팥 두부
    인제 두부
    망미 바
    전포 연어덮밥
    mysql
  • 최근 댓글

  • 최근 글

  • 250x250
  • hELLO· Designed By정상우.v4.10.0
3unB
JAVA - 객체지향프로그래밍(필드, 생성자)
상단으로

티스토리툴바