클래스의 구조와 정의
ㅇ 클래스의 구조
(접근제어자) class 클래스명
{
멤버 변수;
생성자;
메서드(동작);
}
- class 클래스명
- 앞에 접근제한자와 클래스 종류(final, abstract)를 붙일 수 있다.
- 멤버필드 변수와 상수, 즉 자료라고도 하는데, 이는 객체가 만들어질 때 그 객체의 특징적인 속성을 담아두는 것
ㅇ 멤버 메서드
- 메서드는 특정한 일을 수행하는 행위, 동작을 의미
- 메소드도 static 메소드(클래스 메서드)와 instance 메서드라는 두가지 종류가 있다.
- static 메서드는 메서드를 가지는 객체를 생성하지 않아도 사용 가능
- instance 메서드는 객체를 생성해야만 사용 할 수 있는 것
객체 생성
ㅇ 클래스를 만들고 객체를 생성하는 방법
- 클래스명 원하는변수명;
- 원하는변수명 = new 클래스명();
- new라는 연산자를 통해 무조건 메모리 내에 공간을 할당 받고, 해당 클래스의 생성자를 통해서 객체를 생성한 후 생성된 객체를 참조할 수 있는 참조변수(reference)를 변수에 담아준다.(해당 변수가 객체를 구분할 수 있는 주소 개념)
객체는 생성자에 의해서 만들어진다!
ㅇ 참조변수 사용하기
- 참조변수 : 메모리에 생성된 인스턴스를 가리키는 변수
- 참조 값 : 생성된 인스턴스의 메모리 주소 값
참조변수를 사용하면 인스턴스의 멤버변수와 메서드를 참조하여 사용할 수 있는데 이때 도트(.) 연산자를 사용한다.
- 참조변수.멤버변수
- 참조변수.메서드명
멤버변수
instance와 static 두가지 형태가 있다.
ㅇ instance 변수
- 객체가 생성될 때 각 객체마다 따로 생성되어 고유의 값을 받은 다음 각 객체의 속성으로 자리 잡는 변수가 바로 instance 변수
ㄴ 객체마다 따로 생성되어 존재 하며, 각 객체만의 고유하고 특징적인 속성을 담게 되며, 객체를 생성하지 않고는 절대로 사용할 수 없다.
ㅇ static 변수(클래스 변수)
- 하나의 클래스로 여러 개의 객체가 생성 될 때 단 하나만 생성되며 모든 객체들이 공유하는 개념으로 사용되는 변수가 static 변수
- 모든 곳에서 공유해서 사용할 수 있다. 객체를 생성하지 않아도 접근이 가능하다.
멤버메소드
메서드(멤버함수)란 "객체가 할 수 있는 동작"
메서드도 instance 메서드와 static 메서드(클래스 메서드)로 나눠 있다.
ㅇ 메서드의 구성과 정의
메서드는 앞서 설명한 것과 마찬가지로 객체가 제공하는 동작을 구체화한 것.
[접근제한][리턴값][메소드명](자료형 매개변수1, 자료형 매개변수2,….)
{
수행문1;
수행문2;
…;
}
메서드에서 해야할 일들을 모두 끝내고 마지막으로 메서드(멤버함수) 자신을 불러준 곳으로 리턴하는 값의 자료형
만약, 반환값이 없다면 void라는 예약어로 대체해야 한다. 생략 불가.
메서드의 매개변수가 있는 경우, 메서드를 불러오는 경우 매개변수의 자료형과 개수가 같아야 한다.
클래스 사용 예시
ㅇ 클래스를 만들어서 하나의 세트를 만든다.
class student
{
String name;
int kor;
int eng;
int math;
int tot;
int avg;
}
ㅇ 해당 클래스를 new로 객체를 생성해서 사용한다.
student s;
s= new student();
s.name = "홍길동"; // 여기서 .은 멤버접근 연산자
s.kor = 100;
s.eng = 90;
s.math = 60;
s.tot = s.kor + s.eng + s.math;
s.avg = s.tot/3;
접근제한자
서로 다른 객체 각각에 있는 멤버들은 자신들 만의 속성이자 특징이라 대외적으로 공개되는 것이 좋은 것은 아니다. 그래서 접근 제한자를 통해서 접근을 제한할 수 있다. 필요에 따라 접근을 제한하여 은닉성을 높일 수 있고, 정보 유지 효과를 가져 올 수 있다.
ㅇ 접근 제한자의 종류
- public : 모든 접근을 허용, 같은 패키지가 아닌 외부에서도 자유롭게 접근이 가능. 은닉성은 낮음
- protected : 같은 패키지(폴더)에 있는 객체와 상속 관계의 객체들만 허용, 보통 상속한 자식 클래스의 접근만 허용하기 위해 사용하는 경우가 다수
- default : 같은 패키지(폴더) 내에 있는 객체들만 허용. 기본값
- private : 현재 객체 내에서만 허용. 객체지향적 특징인 은닉성을 높이기 위해 일반적으로 private를 자주 사용. setter와 getter로만 접근이 가능하기 때문에 잘못 된 값을 입력하고자 하는 경우 해당 내용을 getter와 setter로 조절할 수 있게 해준다.
'Java | spring > 자바 객체지향' 카테고리의 다른 글
Java 프로그래밍 기본, 메소드 method (0) | 2019.05.07 |
---|---|
구현되지 않은, 추상클래스(abstract class) (0) | 2019.05.07 |
상속과 다형성, 오버라이딩?! 오버로딩?! (0) | 2019.05.07 |
객체지향과 절차지향 프로그래밍?! (0) | 2019.05.06 |
Java, 객체지향 프로그래밍! (0) | 2019.05.03 |
댓글