this와 접근 제어자
1. this, this()
1-1. this
저번 블로그 포스팅 때 만들었던 계산기를 다시 살펴보면,
이미 this를 사용했던 적이 있었다.
this를 사용하면, 메서드의 인수나 변수에 필드와 같은 이름을 붙여도 그것들을 구분하여 사용할 수 있다. this는 주로 생성자와 메소드의 매개변수 이름이 필드와 동일한 경우, 인스턴스 멤버인 필드임을 명시하고자 할때 사용한다.
참고자료:
coding-factory.tistory.com/523
[Java] 자바 this의 의미와 사용법
People클래스에 Age필드와 setAge( ) 메소드가 다음과 같이 선언되어 있다고 가정해보겠습니다. public class People{ //필드 int age; //메소드 void setAge(int a){ age = a; } } 위와같이 age에 외부의 값을 입..
coding-factory.tistory.com
<실습>
package org.opentutorials.javatutorials.numberstring;
class Cal{
int num=5;
void setNum(int num) {
this.num=num;
}
}
public class Number {
public static void main(String[] args) {
Cal c1=new Cal();
System.out.println(c1.num);
c1.setNum(10);
System.out.print(c1.num);
}
}
결과:
5
10
처음에 클래스 안의 num을 5로 초기화한 후 출력하면 5로 나온다.
두번째에 c1.setNum(10)을 이용해서 num으로 받아들인 10을 this.num에 넣음으로써 클래스 안의 변수 num을 10으로 바꿔서 출력할 수 있다.
1-2. this()
자바에는 this와 비슷하게 생긴 this()가 있다. this는 인스턴스 자신을 가르키는 참조 변수이고, this()는 생성자를 말한다.
실습을 해보면서 형태와 적용 방법을 익혀보자.
<실습>
package org.opentutorials.javatutorials.numberstring;
class Student{
int age, grade;
String name;
public Student(int age, int grade, String name) {
this.age =age;
this.grade=grade;
this.name=name;
}
Student(){
this(18, 1, "jane");
}
public void out1() {
System.out.println(this.age+"살 "+this.grade+"등급 "+ this.name);
}
}
public class Number {
public static void main(String[] args) {
Student s1=new Student();
s1.out1();
}
}
결과:
18살 1등급 jane
결론:
생성자가 중복되어 있을때 또 다른 생성자를 호출하고자 할 때 사용
반드시 첫번째 문장에 와야한다.
==> 주의 : 자신을 호출하면 곤란
참고:
https://oingbong.tistory.com/72
자바 개념 - this, this()에 대한 구별
this, this() 에 대하여 구별하여 설명 this 란? : 생성자나 메소드 내에서 쓰임 생성자나 메소드의 매개변수이름을 의미 있는 이름으로 정해 주다 보면 멤버변수 이름과 겹치게 된다. 이때 멤버변수
oingbong.tistory.com
2. 접근 제어자
자바에서는 효율적이고 질서적인 프로그래밍을 위해 접근 제어자를 제공한다. 접근 제어자를 사용하면 각자 정해진 범위에서만 정보를 사용할 수 있다.
자바서는 public, protected, default, private 인 4가지의 접근 제어자를 사용한다.
2-1. public
지금까지 가장 많이 접한 접근 제어자로, public 접근 제어자를 사용하여 선언된 클래스 멤버는 외부로 공개되고, 이 객체를 사용하는 프로그램 어디에서나 접근이 가능하다. 즉, 다른 패키지, 같은 패키지, 다른 클래스 모두에서 접근 가능하다.
2-2. protected
protected 접근제어자를 사용하여 선언된 클래스와 클래스 멤버는 같은 패키지의 멤버에서는 접근 가능하지만, 다른 패키지고 상속관계가 아닐 땐 접근이 불가능하다.
2-3. default
자바에서는 클래스와 클래스 멤버의 접근 제어 기본값을 default 접근제어를 사용한다. 이러한 default를 위한 접근 제어자를 따로 존재하지 않으며, 접근 제어자가 지정되지 않으면 자동으로 default 접근제어를 가지게 된다. default 접근 제어를 가지는 멤버는 같은 클래스의 멤버와 같은 패키지에 속하는 멤버에서만 접근할 수 있다.
2-4. private
private 접근 제어자를 사용하여 선언된 클래스 멤버는 외부에서 접근할 수 없다. 다른 패키지는 물론, 같은 패키지라가ㅗ 해도 접근이 불가능하다. private멤버가 선언된 클래스 내부에서만 접근이 가능하다.
사진 출처, 참고:
www.tcpschool.com/java/java_modifier_accessModifier
코딩교육 티씨피스쿨
4차산업혁명, 코딩교육, 소프트웨어교육, 코딩기초, SW코딩, 기초코딩부터 자바 파이썬 등
tcpschool.com
<정리표>