Source code file to answer programming questions

  1. A Single java application can contain one or more packages.
  2. Each package can contain one or more classes
  3. The access modifier of a class can be public or default
  4. If a class has no package name, the class belongs to default package   
  5. The name of the file of the source code is affected by the class modifier
  6. The communication between a client class and a server class is affected by class modifier and package names
  7. The following tasks helps you to understand the above facts by compiling and running on the command window. 

3.1 을 ACCOUNT.java로 저장해라

3.2를 AccountTest.java로 저장해라 (두 클래스는 같은 패키지 아래에 있어야 한다.)

소스코드를 컴파일 했을때 컴파일 에러가 뜨는가?

왜 에러가 뜨고 어떻게 고쳐야 하는가?

에러를 고치고 프로그램의 스크린샷을 붙여라

 

답 : 한 파일 내에 클래스가 여러 개 있을 수 있는데, public class는 하나만 존재할 수 있으며, 파일명과 같아야 합니다.

Q1 Answer : can’t read “Account” method in “AccountTest” class. So we have to import “Account” class in “AccountPackage”

 


1. 그림 3.1의 클래스에 붙어있는 public을 지우고 Account.java로 저장해라

2. 그림 3.2를 쓰고 AccountTest.java로 저장해라

3. 컴파일 했을 때 어떠한 컴파일 에러도 없다. 왜 컴파일 에러가 없냐? 

답 : 접근자가 없는(default) class는 같은 패키지 안에서라면 상속과는 상관없이 어떤 class든 접근이 가능합니다.


Task 3 : 두 클래스간의 교류 : 한 클래스가 default package에 저장되고 다른 클래스는 non-default package에 저장됨

1. 그림 3.1을 쓰고 default package안에 저장해라

2. 그림 3.2를 AccountTestPachage에 저장해라

3. 컴파일했을 때 에러가 발생하는가? 에러의 이유가 무엇인가?

 

답 : AccountTest 클래스에서 Account 변수를 만들고 name 변수에 접근하려면 오류가 난다.
Account 클래스에서 name의 접근자가 private 이기 때문이다.


클래스 정의할 때 사용하는 접근자 : public, default

 

public : 다른 패키지에서도 객체 생성 가능

default : 동일 패키지 내에서만 객체 생성 가능

 

Money.java

처음 자바파일을 만들면 위와 같은 형태로 되있습니다.

이때 2번째줄 class앞에 public이란 접근자를 볼 수 있는데, 이 접근자가 있다면 Money클래스는 어디서든 객체를 생성 당할수있습니다.

6번째 줄에서 sw객체를 만들고 있는데 sw객체는 default접근자이고 패키지가 다르므로 객체를 생성하지 못합니다.

 

sw.java

class앞에 아무것도 없으면 default입니다. 

이때 7번째 줄에서 Money의 객체를 만들고 있습니다.

Money는 public이므로 객체를 생성 할 수 있습니다.

 

이 외에도 public는 파일 하나당 한번만 쓸 수 있습니다.

 

Money.java

QW클래스와 ER클래스의 접근자는 default입니다.

public을 사용한다면 오류가 납니다.

한 파일에서 public은 클래스명.java인 클래스에만 public을 써야합니다.

여기서는 파일 이름이 Money.java이므로 Money클래스에만 public을 사용 할 수 있습니다.

 

Money.java

QW클래스에 public이 붙어있이므로 오류가 납니다.

(오류내용 : The public type QW must be defined in its own file)


인스턴스 변수와 함수를 정의할 때 사용하는 접근자 : public, protected, private, default

 

public : 다른 패키지에서도 접근 가능

default : 동일 패키지 내에서만 접근 가능

protected : 상속 받은 클래스에서 접근 가능

private : 자기 클래스에서만 접근 가능(정보은닉)

 

- public , default


sw.java

Money.java

Money클래스의 wowon함수는 public이므로 다른 패키지에서 접근 가능하고 aaaa함수는 default이므로 동일 패키지에서만 접근 가능합니다.

sw클래스에서 Money객체를 만들고 wowon함수와 aaaa함수를 호출하는데 wowon함수는 호출이 되고 aaaa는 함수 호출이 안됩니다.(default)

- protected

 

Money.java

sw.java

Money 클래스에서 myMoney를 protected로 선언했으므로

Money 클래스를 상속한 클래스에서 myMoney에게 접근이 가능하다.

 

- private

private 접근자는 자신의 클래스에서만 접근이 가능하다.

정보 은닉이라고도 불리며 객체변수를 숨기는 기능을 한다.

 

sw.java

 

Money.java

sw클래스에서 Money객체를 만들고 myMoney변수에 접근해서 값을 변경하려하면 오류가 납니다.(private)

myMoney의 값을 변경하려면 Money클래스에서 함수를 만들어서 변경하면 됩니다. (setMoney 함수)

 

 

표 보는법

ex) protected접근자를 사용할때 클래스내부에 없고 패캐지에 없어도 상속받은 클래스면 접근가능

      private접근자는 클래스내부에 있을 때만 사용가능



'📌 java > Object-oriented Programming' 카테고리의 다른 글

java - txt.file  (0) 2020.03.26
java.util.Arrays - Arrays 클래스  (0) 2020.03.26
java.util.Scanner  (0) 2020.03.25
Homework_W2-01  (0) 2020.03.25
Homework_01  (0) 2020.03.17
복사했습니다!