본문 바로가기
백수/java

java기초 4

728x90
반응형

메소드 오버로딩

하나의 클래스 안에 동일한 메소드를 다중으로 정의한 것입니다.

단 각각의 메소드가 가지고 있는 매개 변수는 달라야합니다. 반환 타입은 상관없음

메소드 오버로딩은 다형성을 구현하는 한가지 방법 입니다.

메소드 오버로딩은 코들 읽기 어렵게 만들수 있어 주의해야 합니다.

 

UML

객체지향 언어와 밀접한 관련있기에 객체지향 모델링 언어라고 불립니다.

UML은 클래스만 그리는 도구는 아닌 객체지향설계 시에 사용되는 일반적인 모델언어 입니다.

프로그래밍 언어아니고 모델링 언어 입니다.

 

String 클래스

문자열(string)은 프로그램에서 많이 사용되는 중요한 자료형 입니다.

String 클래스를 이용하여 문자열을 저장하고 처리 가능 합니다.

따라 정수, 실수와 다르게 문자열은 객체라는 점을 기억해야합니다.

 

객체 생성

자바에서 객체를 생성하는 방법은 키워드 "new"를 사용해야 합니다.

문자열은 자주 사용되므로 "new" 연산자를 미사용해도 문자열 상수로 표기해도 자동적으로 객체가 생성됩니다.

더보기

형식 : String str = new String("Hello")

위의 문장을 실행한경우 String 클래스의 객체가 하나 생성되고 str은 참조 변수로서 생성된 객체를 가리키는 변수 입니다.

기초 변수는 값을 변수 안에 저장하지만 참조 변수는 객체의 주소가 저장됩니다.

 

접근 제어

객체 지향에서 정보 은닉이란 사용자에게 불필요한 정보를 숨겨 사용자에게 최소한의 정보만으로

프로그램을 간단하게 사용가능 합니다.

일반적으로 private 사용합니다. 상수를 제외한경우 필드에 pubic 사용하면 안됩니다.

 

pubic, private의 접근 지정자를 멤버 앞에 붙여 접근을 제한하게 됩니다.

pubic : 공용으로 멤버 앞에 사용하는경우 누구나 자유롭게 접근가능한 멤버 입니다.

private : 전용으로 private 붙인 클래스 안에서만 접근 가능한 멤버 입니다.

protected : 멤버는 부모 클래스와 자식 클래스만 접근 가능 합니다.

default : 멤버 앞에 접근 지정자가 없는경우 동일한 패키지 내에 접근이 가능 합니다.

 

접근자와 설정자

클래스 안에 저장된 필드 값을 사용하는경우 사용

접근자(get) : 필드값을 반환

설정자(set) : 필드값을 설정

 

사용 이유

1. 접근자, 설정자를 사용하는 경우 추후 클래스 업그레이드할 때 편리

2. 접근자에서 매개 변수를 통해 잘못된 값이 넘어 온경우 이를 사전에 차단

3. 필요할 때마다 필드값을 계산하여 반환 가능

4. 접근자만을 제공하면 자동적으로 읽기만 가능한 필드로 생성 가능

 

생성자

갹채거 생성될때 객체를 초기화하는 특수한 메소드 입니다.

생성자의 이름은 클래스 이름과 동일합니다.

일반 메소드와 아주 흡사하나 반환값을 가지지 않습니다. 매개변수는 포함 가능

생성자 이름 앞에 아무 것도 안 붙이고 주로 필드에 초기값을 부여할 경우 많이 사용되지만

특별한 초기화 절차를 수행 가능 합니다.

위의 문장을 실행하는경우 "객체 1의 cnt ::: 1" 표출 됩니다.

 

개발자가 생성자를 정의 하든 안하든 자바에서는 모든 클래스가 생성자를 가집니다.

자바는 자동적으로 모든 멤버 변수들을 기본값을 초기화 하는 기본 생성자를 가집니다.

기본 생성자에서는 필드가 int와 같은 수치형 변수 인경우 0으로,

참조형 변수인경우 null, 부울형 변수인경우 false로 초기화 됩니다.

 

생성자 오버로딩생성자는 다중 오버로딩 가능하지만 매개변수는 다르게 해야 합니다.

 

this로 현재 객체 나타내기메소드, 생성자에서 this는 현재 객체를 나타냅니다.this를 이용하여 현재 객체의 어떤 멤버도 참조 가능하고 this()를 사용하는 경우 생성자 호출이 됩니다.

 

this()로 생성자 호출하기

생성자 안에서 this()를 사용하여 다른 생성자를 호출 가능합니다.

이것을 명시적인 생성자 호출이라 합니다.

 

 

감사합니다.

 

728x90
반응형

'백수 > java' 카테고리의 다른 글

java기초7  (0) 2022.10.11
java기초6  (0) 2022.10.10
java기초 5  (0) 2022.10.05
java 기초3  (0) 2022.10.03
java 타입, 연산자  (0) 2022.09.29