명품 JAVA Programming 제4장 요약/예제 open challenge/실습문제

이종훈·2021년 12월 14일

명품 JAVA Programming

목록 보기
6/7

요약

클래스와 객체

객체 지향 언어의 특징 3가지

캡슐화 : 클래스라는 캡슐을 사용하며 필드(멤버변수)와 메소드(멤버함수)로 구성된다.

상속 : 자식클래스(sub class)가 부모 클래스(super class)의 속성을 물려받아 사용하고 기능을 추가(extends) 하는 것.

다형성 : 같은 이름의 메소드가 클래스나 객체에 따라 다르게 동작하도록 구현되는 것.

  • overriding 오버라이딩 : 슈퍼클래스를 서브클래스에서 동일한 이름으로 자신의 특징에 맞게 재구현하는 것

  • overloading 오버로딩 : 클래스 내에서 이름이 같지만 서로 다르게 동작하는 메소드를 여러개 만드는 것

객체 지향 언어의 목적

소프트웨어의 생산성 향상, 실세계에 대한 쉬운 모델링

객체 : 클래스 모양대로 생성된 실체. 클래스의 인스턴스 instance. 사례

클래스 : 객체를 만들기 위한 설계도.

멤버 : 클래스의 구성 요소. 필드와 메소드 두 종류가 있다.

필드 : 객체 내 값을 저장할 멤버 변수

메소드 : 함수이며 객체의 행동을 구현

접근 지정자 access specifier

접근의 범위 지정. public, private, protected, default.

생성자 constructor

  • new를 통해 객체가 생성될 때 자동으로 한번만 호출.

  • 객체 초기화를 위해 실행되는 클래스의 이름과 동일한 메소드.

  • 오버로딩 : 매개변수의 개수와 타입만 다르다면 클래스 내에 생성자를 여러 개 둘 수 있다.

  • 리턴 타입을 지정할 수 없다. public Circle() {...} (x) void(x) return;(0)

디폴트 생성자 default constructor

매개변수와 실행코드가 없어 아무 일도 하지 않고 단순리턴하는 생성자

  • 객체가 생성될 때 반드시 실행되기에 생성자가 없는 클래스는 없다.

-> 생성자가 하나도 없으면 컴파일러가 생성자를 자동 생성하여 컴파일러 오류가 호출되지 않음

  • 생성자가 하나라도 존재하면 기본생성자가 자동으로 삽입되지 않음

-> 컴파일오류 발생

class Circle{
public Circle(){} //기본생성자(디폴트생성자). 단순 리턴만 함
}

레퍼런스 변수 선언 : null로 초기화된다.

Circle 타입 크기의 메모리 할당 -> Circle() 생성자 코드 실행

​Circle pizza=new Circle();

Circle pizza; //레퍼런스를 가지는 변수일 뿐 아직 객체가 생성된 것이 아니다.
pizza=new Circle(); //객체 생성은 new 연산자를 사용해서 객체를 생성한다.

객체 멤버 접근 : 레퍼런스 변수 뒤 점 연산자를 붙인다.

pizza.radius=10; //pizza 객체의 radius 필드에 10 대입
int r=pizza.radius; //pizza 객체의 radius 필드값 읽을 때

this 레퍼런스 : 객체 자신을 가리키는 레퍼런스. 메소드에서 사용되며 현재 실행되고 있는 메소드가 속한 객체에 대한 참조로 컴파일러에 의해 자동 관리된다. static에서는 사용될 수 없다.

public Circle(int radius) {this.radius=radius;}
// 멤버, 매개변수
public Circle getMe() {return this;} //객체 자신의 레퍼런스 리턴

this() : 클래스 내에서 생성자가 다른 생성자를 호출할 때 사용되는 자바코드.

반드시 생성자 코드에서만 호출, 같은 클래스 내 다른 생성자 호출 시 사용, 생성자의 첫 번째 문장

객체 배열 : 기본 타입 데이터 외 객체에 대한 레퍼런스를 원소로 갖는 배열

Circle[] c; //배열에 대한 레퍼런스 선언
c=new Circle[5]; //Circle 객체에 대한 레퍼런스 생성
for(int i=0; i<c.length; i++) //c.length는 배열 c의 크기(5)
c[i]=new Circle(i); //i번째 Circle 객체 생성

4장 예제

예제4-1

예제4-2

예제4-3

예제4-4

예제4-5

예제4-6

예제4-7

예제4-8

예제4-11

예제4-12

실습문제

실습4-1

실습4-2

실습4-3

실습4-4

openChallenge

profile
빅데이터 분석 및 UI구현

0개의 댓글