Java(자바) 7日次

블로그 移轉·2022년 11월 1일

Java

목록 보기
7/20

Java 面接 族譜 整理 (7日次)

1. set classpath에 對하여 說明하시오。

  • classpath

    Java 假想머신의 클래스 探索經路

    새로운 폴더를 만들고 그 안에 클래스 파일을 옮겨 넣게 되면 그 클래스의 인스턴스를 生成하려고 할 때 經路를 찾지 못해 誤謬가 發生한다。그래서 이 때 經路를 찾을 수 있도록 classpath를 設定해야한다。

  • set classpath

    클래스 探索經路 設定

    cmd(터미널)에서 set classpath라는 命令語를 通해 새로 만든 폴더에 있는 파일의 經路를 찾을 수 있도록 設定해주면、正常的으로 클래스 파일을 찾아 그 클래스의 인스턴스를 生成할 수 있게 된다。

    cmd(터미널)에서 set classpath 實行方法

    set classpath=.; 뒤에 絶對經路、或은 相對經路를 追加하면된다。

    C:\PackageStudy>**`set
    classpath = **.;`C:\PackageStudy\MyClass

    . (點) : 現在 디렉토리
    ;(세미콜론)을 줘서 100個의 經路를 追加할 수도 있다。

2. 絶對經路와 相對經路에 對하여 說明하시오。

루트 디렉토리를 始作으로 指定한 絶對經路
C:\PackageStudy>set classpath=.;C:\PackageStudy\MyClass

  • 클래스 패스를 絶對經路로 固定시키면?
    現在 디렉토리를 基準으로 指定한 「相對經路」

    C:\PackageStudy>set classpath=.;.\MyClass

    . (點) : 現在 디렉토리

一般的으로 現在 디렉토리를 基準으로 經路를 指定한다。
이클립스를 새로 設置하거나、다른 곳으로 옮겨서 使用하거나 파일을 옮기는 境遇 等、上位 폴더 自體의 經路가 變經되는 境遇가 있기 때문에、絶對經路를 指定하면 經路를 찾지 못하는 狀況이 當然히 發生하게 된다。그렇기 때문에 一般的으로 相對經路로 指定을 한다。

3. 「.」 과 「..」 의 差異點은?

. (點) : 現在 디렉토리
.. (點々) : 以前 디렉토리

> cd . → 現在 디렉토리로 移動
> cd .. → 以前(한 段階 上位) 디렉토리로 移動
> cd java_area → java_area로 移動

cd (change directory) : 命令窓의 디렉토리 變更(移動) 命令語
위의 命令語、옵션은 windows、linux 同一

4. package의 用途는?

實際業務에서는 自身이 作成하지 않은 클래스 파일을 使用하는 境遇가 많은데、이 때 만들어진 클래스들의 이름이 重複되는 일이 充分히 發生할 수 있다。基本的으로 同名의 클래스 파일을 같은 폴더 內에 둘 수 없기 때문에 다른 package를 使用하면 同名의 클래스 파일을 使用해야하는 境遇 다른 폴더에 貯藏되기 때문에 別途로 管理할 수 있다。

空間 : 同名의 클래스 파일을 같은 位置에 둘 수 없다。
→ Circle.java와 Circle.java

接近方法 : 인스턴스 生成方法에서 두 클래스에 差異가 없다。

Circle circle = new Circle();

空間的、接近的 衝突 解決을 爲한 패키지 宣言

클래스 接近方法의 區分 → 서로 다른 패키지의 두 클래스는 인스턴스 生成時 使用하는 이름이 다르다。

com.bit.Circle … 과 com.bat.Circle …

클래스의 空間的인 區分 → 서로 다른 패키지의 두 클래스 파일은 貯藏되는 位置가 다르다。

com > bit > Circle.java와 com > bat > Circle.java

5. package의 基本的인 命名法은?

  • 基本的으로 會社의 도메인을 뒤에서부터 作成(www는 除外 : 全世界共通)하고 마지막은 팀名 또는 프로젝트名을 作成한다。
  • 區分은 點(.)으로 한다。(폴더가 生成되는 單位)
    → 例示) com.bit.class4、com.oracle.팀名 or 프로젝트名

6. 情報隱匿에 對하여 說明하시오。

Java는 客體指向言語!/ 反對는 節次指向言語(C言語)

客體指向言語의 特徵

1) 情報隱匿 (information hiding)
2) 相續・繼承 (inheritance)
3) 多形性・多態性 (polymorphism) → (重要!70%)
4) 캡슐化 (encapsulation)
5) 抽象化 (abstraction)

情報隱匿을 하지 않고 프로그램을 作成해 使用者에게 提供하였을 때、使用者가 클래스의 데이터에 直接的으로 接近했으나(例를 들어 論理的誤謬를 가진 값을 代入하는 等으로) 誤謬가 發生하지 않고(컴파일 誤謬가 發生하지 않고)프로그램이 實行되어 元來의 프로그램의 意圖와 全혀 다른 結果가 導出되는 問題가 생길 수 있다。
이것은 프로그램을 잘못 作成한 것이긴 함。

이런 問題들을 防止하기 爲해서 接近制限子를 利用해 外部에서의 直接的인 接近權限을 制限하고 機能(메소드)을 通해 間接的으로 接近하도록 誘導하는 것이다。(그래야 論理的誤謬를 가진 값 等을 가지고 接近할 때 컴파일誤謬로 이어지도록 만들 수 있다。)

情報隱匿의 基本原則에 따라 인스턴스 變數는 public으로、인스턴스 變數에 接近하기 爲한 메소드들은 public으로 宣言하는 것이 慣例이다。

7. 接近制限子 4種類에 對하여 說明하시오。

public > protected > default > private

各々의 接近制恨子는 變數、메소드、클래스의 接近權限을 制限하기 爲해서 使用되며、變數、메소드、클래스 이름의 맨 앞에 該當 키워드를 붙여 使用한다。(default는 아무것도 안 붙임)

  • public

    1) 모든 파일에서 接近可能、어디서든 인스턴스 生成이 可能하다。
    2) private으로 宣言된 데이터를 外部에서 活用하기 爲해 getter、setter 같은 函數를 public으로 宣言해서 使用한다。
    3) public 클래스는 外部에 露出시키기 爲한 클래스이다。
    4) 使用例示 →

    public static void main(String[] args) { }
  • default

    1) 同一 패키지로 묶인 클래스 內에서만(同一 패키지 內에서만) 接近이 可能하고、인스턴스 生成을 許容한다。
    2) 이름 앞에 接近制限子를 붙이지 않으면 default이다。
    → 아무 宣言도 하지 않은 것을 意味함、default는 키워드가 아니다。
    3) 使用例示 →

    class Circle {}
  • protected

    1) 他 패키지에 있더라도 相續(繼承)받은 클래스에서는 接近可能하다。

  • private

    1) 同一한 클래스 內에서만 接近可能하다。
    2) 데이터를 private로 宣言하고 끝냈을 때 意味가 있는 境遇도 있지만、外部에서 接近해서 使用할 수 있어야 하기 때문에 값을 가져가기 爲한 getter、값을 貯藏 및 修正하기 爲한 setter函數를 public으로 宣言해서 使用한다。

8. class에서 붙일 수 있는 接近制限子 2個를 說明하고、該當 接近制限子의 使用目的은?

클래스 定義 對象

  • public
  • default (class앞에 아무것도 안 붙인 것이 default)

인스턴스 變數와 메소드 對象

  • public
  • protected
  • default
  • private
    (4種類全部)

public

  • 모든 파일에서 接近可能、어디서든 인스턴스 生成이 可能하다。
  • public클래스는 外部에 露出시키기 爲한 클래스이다。

    → 열어보지 않아도 파일名만으로 內容을 類推할 수 있어야한다。
    → 하나의 소스코드에는 하나의 public클래스만 作成할 수 있다。
    → public클래스名은 .java의 이름과 同一해야한다。

例示

  • AAA.java
     public class AAA {
     // public클래스이기 때문에 파일名은 AAA.java이어야만 함}

default

  • 패키지로 묶인 클래스 內에서만(同一 패키지 內에서만) 인스턴스 生成을 許容한다。
  • 이름 앞에 接近制限子를 붙이지 않으면 default다。
    → 아무 宣言도 하지 않은 것、default는 키워드가 아니다。

例示

class ZZZ {
// .java의 파일名을 ZZZ 外에 다른 것으로 定하는 것도 可能합니다。}
profile
移轉했읍니다。

0개의 댓글