제어자(Modifier)는 클래스, 변수 또는 메서드의 선언부에 함께 사용되어 부가적인 의미를 부여합니다.
제어자의 종류에는 크게 접근 제어자와 그외의 제어자로 구분됩니다.
접근제어자에는 public, protected, default, private 가 있고 그외의 제어자에는 static, final, abstract등등이 있습니다.
1. static
static는 사전적의미로 '클래스의' 또는 '공통적인'이란 의미를 가집니다.
클래스변수는 인스턴스에 관계없이 같은 값을 가지므로 하나의 변수를 모든 인스턴스가 공유합니다.
static이 붙은 멤버변수, 메서드, 초기화 블럭은 인스턴스를 생성하지 않고도 접근이 가능하여 사용가능합니다.
2. final
final의 사전적의미는 '마지막의', '변경될 수 없는'이란 의미를 가지고 있습니다.
변수에 사용되면 값을 변경할 수 없는 상수가 되고, 메서드에 사용된다면 오버라이딩을 할 수 없게되고, 클래스에 사용된다면 상속을 받지 못하게 합니다. ( 조상이 될 수 없습니다. )
3. abstract
abstract의 사전적의미는 '추상의' , '미완성'의 의미를 가지고 있습니다.
메서드의 선언부만 선언하고 구현부는 빠진 추상메서드를 사용할 수 있습니다.
추상클래스를 선언하면 추상메서드를 포함하고 있다고 생각하시면 됩니다.
4. 접근제어자(access modifier)
접근제어자는 멤머 또는 클래스의 앞에 붙여서 사용되며, 이 멤버또는 클래스를 외부에서 마음대로 사용하지 못하도록 강제하는데 있습니다.
default접근제어자는 굳이 앞에 명시하지 않으며, 클래스나 멤머변수, 메서드, 생성자에 접근제어자가 붙어있지 않다면 default 접근제어자임을 나타냅니다.
- private : 같은 클래스 내에서만 접근이 가능합니다.
- default : 같은 패키지 내애서만 접근이 가능합니다.
- protected: 같은 패키지 내에서, 다른 패키지의 자손클래스에서 접근이 가능합니다.
- public : 접근 제한이 전혀 없습니다.
public > protected > default > private
우리가 접근제어자를 사용하는 이유는 외부로부터 클래스의 데이터를 보호하기 위함입니다.
민감한 데이터를 외부에서 함부로 변경하지 못하는것을 객체지향의 개념으로 말하면 data hiding이라고 하며, 캡슐화(encapsulation)에 해당하는 내용입니다.
접근제어자를 사용하는 이유는 외부로부터 데이터를 보호하기 위해서, 외부에는 불필요한, 내부적으로만 사용되는, 부분을 감추기 위해서 사용합니다.
5. 다형성(polymorphism)
객체지향언어에서 중요한 특징중에 하나인 다형성은 상속과 깊은 관계가 있습니다. 객체지향에서 다형성이란 여러가지 형태를 가질 수 있는 능력을 말합니다.
하나의 타입의 참조변수로 여러 타입의 객체를 참조할 수 있도록 하였습니다.
자바언어에서는 조상클래스의 참조변수로 자손클래스의 인스턴스를 참조할 수 있도록 하였습니다.
오늘은 여기까지 하겠습니다.
이글이 도움이 된셨다면 공감버튼 눌러주시길 부탁드립니다.^^
공감버튼은 로그인을 하시지 않아도 누르실 수 있습니다.^^*
추상클래스(abstract class) (0) | 2019.03.30 |
---|---|
참조변수 형변환 (0) | 2019.03.14 |
클래스의 관계, 단일 상속, Object 클래스, 오버라이딩, super, super() (0) | 2019.03.12 |
자바강좌 - 상속(inheritance) 1 (0) | 2019.03.12 |
자바강좌 - 네번째 ( 클래스 메서드, 인스턴스 메서드, 생성자, 변수의 초기화) (0) | 2019.03.10 |
댓글 영역