<안내>
필자도 배우는 입장이라 틀린점, 잘못된 점이 있을 수 있습니다.
그러니 지적, 피드백 환영합니다.
this와 this()
- 생성자에서 다른 생성자를 호출할 수 있도록 기존 생성자를 나타내는 this() 제공
- this()를 사용하면 오버로딩된 생성자에서 생기는 중복코드를 없앨 수 있음
- this() 사용시 생성자의 첫 행에 위치해야 함
public Circle() { // 오류 안남
this("빨강");
radius = 10.0;
}
public Circle() { // 오류 남
radius = 10.0;
this("빨강");
}
연속 호출
- 예를 들어 반환 타입이 void인 setName(String name), setAge(), sayHello()라는 메서드를 가진 Person 클래스가 있다고 가정
//연속호출 미사용시
Person person = new Person();
person.setName("chan");
person.setAge(20);
person.satHello(); // 메서드를 호출할때마다 새로운 실행문을 사용해야하므로 번거롭고 가독성도 떨어짐
//연속호출을 사용하면
Person person = new Person();
person.setName("chan").setAge((20).sayHello(); // setName 이 this를 반환하므로 Person 객체이다. 따라서 person.setName은 setAge()를 호출할 수 있다.
// setName , Age는 this라는 person 객체를 반환
public Person setName(String name) {
this.name = name;
return this;
}
정적 멤버의 활용
- 정적 멤버는 객체 생성 전에도 사용할 수 있기 때문에, 객체 이름 대신 클래스 이름 과 연결하여 사용.
클래스이름.정적변수이름 > Circle.numofCircles
클래스이름.정적메서드이름()
- 상수는 변경되지 않는 변수기 때문에, fianl 키워드로 지정하지만, final로만 지정하면 객체마다 자신의 기억공간을 가진다.
- 상수는 값이 변경되지 않으므로 객체마다 따로 기억공간을 할당할 필요가 있다. 따라서 static final 로 지정해서 선언
static(모든 객체가 공유한다) final(초깃값이 대입되면 더이상 수정할 수 없다) 데이터형 상수 = 초깃값;
== 와 equals()의 차이점
== : 연산자임
equals() 함수임
일단 형태부터 다르고,
== 는 주소값이 같으면 True , equals()는 안의 내용물만 같으면 True
package sec13;
public class Equal_practice {
public static void main(String[] args) {
String a = "cat";
String b = a;
String c = new String("cat");
System.out.println(a == b); // a와 b는 주소가 같다. (같은 애다)
System.out.println(a.equals(b)); // a와 b는 내용물이 같다.
System.out.println(a == c); // a와 c는 주소가 다르다 (다른 애다)
System.out.println(a.equals(c)); // a와 c는 내용물이 같다.
}
}
결과값
true // a와 b는 주소가 같다. (같은 애다)
true // a와 b는 내용물이 같다.
false // a와 c는 주소가 다르다 (다른 애다)
true // a와 c는 내용물이 같다.
'TIL > [객체지향 프로그래밍] TIL' 카테고리의 다른 글
TIL (22.04.16) 시험범위 정리 2장 (0) | 2022.04.16 |
---|---|
TIL (22.04.16) 시험 범위 정리 1장 (0) | 2022.04.16 |
TIL (22.04.08) (0) | 2022.04.08 |
TIL (22.04.06) (0) | 2022.04.06 |
TIL (22.04.01) (0) | 2022.04.01 |