Back/Java

[programming basic] 메소드와 클래스, 객체, 추상화, 필드 (+캡슐화)

SIXXXX_ 2021. 7. 11. 23:45
728x90

메소드의 표현식

 

[ 접근 제한자 ] [ 예약어 ] 반환형 메소드명(매개변수) { }

 

ex.public void showWIndow() { }

접근제한자 반환형 메소드명 ()매개변수x

 

접근제한자 : public(+) , protected(#), default(x), private (-)

 

예약어 : static(객체생성없이사용), final(상속시 오버라이딩 불가능) , abstract(상속해 오버라이딩으로 완성사용), syncronized(동기화처리, 공유자원에 한개의 스레드만 접근가능함), static final

 

반환형 : void(반환형x), 기본자료형, 배열, 클래스(반환값이 해당클래스타입의 객체일 경우 사용)

 

매개변수 : (), 기본자료형(값변경해도 원래값 변경x), 배열과 클래스(참조형을 매개변수로 전달시 주소값을 전달하므로 매개변수를 수정하면 본래 데이터가 수정된다), 가변인자

 

리턴값return ;

없을경우 void 를 쓴다.

 

 

 

 

클래스와 추상화

 

클래스는 객체의 설계도라고 이해하기, 개념의 공통적 요소를 용도에 맞게 추상화하는 것

-변수명과 자료형을 작성한다

 

클래스와 오브젝트 :

클래스 공통 특징,서술 vs 오브젝트 : 고유성, 구체, 실체가 존재

 

선언하기 : (속성과 기능이 있다) 

[접근 제한자 ] [ 예약어 ] class 클래스명 {  }

 

객체 : 인스턴스의 할당, new연산자(생성자)를 사용해 객체를 생성, heap메모리 공간에 서로 다른 자료형의 데이터가 연속으로 나열 할당된 객체 공간이 만들어진다.

 instance(*객체)

 

 

*접근제한자  : 객체간의 허용 가능한 접근 범위 제어 및 상속관계에서 부모클래스가 자식클래스에게 허용하는 정보의 범위를 제어하는 지시자.

 

public : 모든 패키지 밖에서 import사용

protected : 비상속시 동일패키지 내부, 상속시 패키지 밖의 상속받은 후손클래스 내부에서 사용가능

default : 동일 패키지내부에서 사용가능

private : 클래스 내부에서만 사용가능

 

 

*객체지향의 3대원칙

1. 캡슐화

2. 상속

3. 다형성

 

*캡슐화란 : 추상화를 통해 정리된 데이터들과 기능을 하나로 묶어 관리하는 기법으로 데이터의 접근 제한을 원칙으로 한다.

-캡슐화의 원칙 

필드 : 클래스 멤버 변수에 대한 접근권한은 private을 원칙으로 한다

메소드 : 클래스 멤버 변수에 대한 연산처리를 목적으로 하는 메소드를 클래스 내부에 작성하고 클래스 밖에서 접근할 수 있도록 public으로 설정한다.

 

 

*필드(field) (=속성)(=member 변수)

 

변수의 종류(선언위치)

1. 클래스 변수 : 클래스 영역에 static 키워드를 가진다 *프로그램 종료시 소멸

2. 멤버 변수(인스턴스 변수) :  클래스영역에 선언 *객체 소멸시 소멸(Garbege collection소관)

3. 지역변수 : 클래스 영역이 아닌 메소드, 생성자, 초기화 블럭 내부에서 선언한다 *메소드 종료시 소멸

 

*static : 같은 타입의 여러객체가 공유할 필드에 사용, 프로그램 시작시 정적 메모리 영역에 자동 할당되는 멤버에 적용

*필드 예약어 : final : 하나의 값만 계속 저장해야 하는 변수에 사용한다

접근제한자 final 자료형 변수명 = 초기값;

 

 

****오버로딩(Overloading)

한 클래스 내에서 파라미터 선언부가 다르고 이름이 같은 메소드를 여러개 정의하는 것

성립조건은 1) 메소드 이름이 같아야하고 2)매개변수 선언부가 달라야 한다(매개변수 타입, 개수, 순서)

 

 

*getter와 setter 메소드

setter는 필드에 변경할 값을 전달받아서 필드값을 변경하는 메소드로 저장용이라 생각하기

매개변수가 필드와 동일한 이름일 경우 this.연산자를 붙여서 구분한다

접근제한자 void set필드명(자료형 변수) {

this. 필드명 = 자료형 변수;

}

***this는 모든 인스턴스의 메소드에 숨겨진채 존재하는 지역변수로 해당 객체의 주소값을 담고 있다.

 

getter는 필드에 기록된 값을 읽어서 요구하는 쪽으로 읽은 값을 넘기는 메소드

접근제한자 반환형 get필드명() {

return 필드명;

}

 

 

생성자 : 객체를 생성할때 항.상 실행되는 것으로 메소드 중에서 맨 처음 실행되는 메소드

객체의 초기화란 클래스가 객체를 생성, 호출했을때 객체의 필드를 초기화하거나 메소드를 호출해서 객체를 사용할 준비를 하는 것으로 일련의 준비 단계이다.

 

규칙 : 반드시 생성자가 클래스에 존재해야되고 인스턴스 생성시 딱 한번 호출, 클래스 이름과 동일한 이름을 가진 메소드, 반환형이 존재하지 않는다

 

기본생성자 : 매개변수없는 생성자 JVM이 기본생성자 자동으로 생성

매개변수가 있다면 JVM이 기본 생성자를 자동 생성하지 않기 때문에 오버로딩을 이용해 작성하고 상속사용시 반드시 기본생성자를 작성해야 한다

1) [접근제한자] 클래스명() { }

2) [접근제한자] 클래스명(매개변수) {

this.필드명 = 매개변수;

}

 

 

this() 생성자, 같은 클래스의 다른 생성자를 호출할 때 사용하는 것으로 반드시 첫번째 줄에 선언