▶ 배열 / 접근제어자 이해
https://zoooom-in.tistory.com/55
[김영한_자바기본][6. 접근 제어자] 배열 / 접근 제어자 함께 이해하기_문제풀이 쇼핑 카트(p.17)
패키지가 서로 다르다면 import를 선언하는 것이 중요하며, main 메서드가 없는 경우 매개변수로 대체하여 진행할 수 있다. 끝으로 return은 메서드 (전체) 실행 중간에서 빠져나가는 역할을 하고, bre
zoooom-in.tistory.com
클래스 내부에서 클래스와 동일 객체 생성이 가능하다.
또한 Public Class는 1개만 사용 가능하며, Default Class는 여러개 사용이 가능하다.
[p.10 / PublicClass_일부 발췌] 클래스 내부 동일한 클래스 객체 생성 가능
public class PublicClass {
public static void main(String[] args) {
PublicClass publicClass = new PublicClass();
}
}
- 클래스 내부에서 동일한 클래스의 객체를 생성할 수 있다.
- 주어진 코드에서는 `main` 메서드 내에서 `PublicClass`의 객체를 생성하고 있다.
- 일반적인 객체 생성과 동일한 방식이다.
∴ 클래스 내부에서 동일한 클래스의 객체를 생성하는 것은 특별한 제한이나 문제를 발생시키지 않는다.
[p.10 / PublicClass] Public Class는 1개만 사용가능하지만, Default Class는 여러개 사용 가능하다.
public class PublicClass {
public static void main(String[] args) {
PublicClass publicClass = new PublicClass();
DefaultClass1 defaultClass1 = new DefaultClass1();
DefaultClass2 defaultClass2 = new DefaultClass2();
}
}
class DefaultClass1{
}
class DefaultClass2{
}
- Class는 대문자로 생성해야 한다.
- 클래스 내부에서 동일한 클래스의 객체를 생성할 수 있다.
[p.11 / PublicClassInnerMain] 내부 package 사용에 따라 default class 사용 가능
public static void main(String[] args) {
PublicClass publicClass = new PublicClass();
DefaultClass1 class1 = new DefaultClass1();
DefaultClass2 class2 = new DefaultClass2();
}
① PublicClass
- Main을 보면 `publicClass` 변수는 동일한 패키지에 속한 `PublicClass`(p.10) 클래스에 접근할 수 있다.
- `PublicClassInnerMain` 클래스의 `main` 메서드에서 `publicClass` 변수를 통해
`PublicClass` 클래스의 객체를 참조할 수 있다.
- 이 객체에는 `PublicClass` 클래스의 모든 멤버 변수와 메서드에 접근할 수 있는 기능이 포함된다다.
∴ `publicClass.publicClass`는 `PublicClass` 클래스의 `publicClass` 멤버 변수에 접근하는 것이다.
> 이를 통해 `PublicClass` 클래스의 본체에 접근할 수 있다.
② DefaultClass1 & DefaultClass2
- `DefaultClass1`과 `DefaultClass2`는 클래스이지만, 내부에 멤버 변수나 메서드가 정의되어 있지 않다.
- 따라서 객체를 생성할 수는 있지만, 해당 객체에 접근할 데이터나 동작은 존재하지 않는다.
- 이를 "빈 클래스" 또는 "플레이스홀더 클래스"라고 한다.
- 역할은 다른 클래스들과 협력하는 데 사용되며, 실제 데이터를 포함하거나 처리하는 기능을 갖고 있지 않다.
[p.12 / PublicClassOuterMain] 외부 package 사용에 따라 default class 사용 불가
import access.a.PublicClass;
public class PublicClassOuterMain {
public static void main(String[] args) {
PublicClass publicClass = new PublicClass();
//DefaultClass1 dafaultClass = new DefaultClass1 ();
//DefaultClass2 dafaultClass = new DefaultClass2 ();
}
}