본문 바로가기
Programming/Java, Spring

[Java 기초문법] 클래스 class 이해

by Renechoi 2022. 10. 17.

[Jave 기초문법] by Professional Java Developer Career Starter: Java Foundations @ Udemy

 

Business라는 새로운 프로젝트를 생성한다. 

 

Class로서 Company, Factory worker, newsagency를 만든다. 

 

 

 

 

퍼블릭은 일반적으로 사용하나 일단 빼둔다. 

 

가장 작은 단위의 클래스가 된다. 

 

 

 

 

뉴스에이전시는 회사를 인터뷰하고자 한다

 

하지만 컴패니는 뉴스에이전시가 FactoryWorker와는 인터뷰하지 않기를 바란다

 

Factoryworker는 일만하길 바란다
   

 

class NewsAgency {         // 뉴스에이전시는 회사를 인터뷰하고자 한다 / 하지만 컴패니는 뉴스에이전시가 FactoryWorker와는 인터뷰하지 않기를 바란다 / Factoryworker는 일만하길 바란다
    Company company;
    FactoryWorker worker;
}

 

 

business라는 패키지를 생성해서 Company와 Factoryworker를 넣는다 

 

이때 자동으로 임포트가 다음과 같이 된다. 

 

import business.Company;
import business.FactoryWorker;

class NewsAgency {         // 뉴스에이전시는 회사를 인터뷰하고자 한다 / 하지만 컴패니는 뉴스에이전시가 FactoryWorker와는 인터뷰하지 않기를 바란다 / Factoryworker는 일만하길 바란다
    Company company;
    FactoryWorker worker;
}

 

 

하지만 클래스 위치가 다르기 때문에 불러올 수 없다는 에러가 발생한다. 

 

 

이때  NewsAgency는 Default  패키지를 가졌고 

C와 F는 business라는 패키지를 가졌다고 할 수 있다.

 

이때 Newsagency는 비즈니스 패키지와는 interterct할 수가 없는데 

패키지 protected되기 때문이다. 

 

 

방법은 간단하다. 

여기서 사용하는 것이 Public 

 

 

 

 

 

이때 처음 가정한 상황 세팅을 다시 고려해보자. 

 

컴패니는 F.W와 N.A가 만나지 않기를 바란다. 

 

import를 지워주고 FA도 지워준다. 

 

 

 

 

실은 N.A에서 부른 Company는 다음과 같은 로직을 따르고 있는 것이다. 

 

 

 

 

 

 

만약 다른 package를 만들고 Company라는 이름을 썼다고 가정해보자. 

 

 

어떤 컴퍼니를 불러올 것인지의 문제에 직면하게 된다 => 명시적으로 잘 써줘야 하는 이유 

 

 

 

 

 

 

 

 

 

 

 

반응형