JAVA/이론 정리 및 예제

[JAVA/자바] #6_2 클래스

chaewon 2021. 9. 14. 16:17
  • 클래스명 레퍼런스변수명 = new 클래스명();
    • 사용자정의 자료형: 작성한 소스코드는 클래스이고, 사용자 정의 자료형이라 한다.
      (메소드만 있는 클래스, 속성만 있는 클래스)
    • Person p = new Person();
      • Strack : person이라는 타입의 p라는 레퍼런스 변수 생성
      • heap : new 연산자를 통해 객체를 만들어서 주소를 p에 대입
         → 문제가 발생할 수도 있기 때문에 접근제한을 주고 간접적으로 가져올 수 있도록 메소드
public class Variable { 
  public static int size; 
  private int num; 
  public void test(){ 
    int num = 100; 
  } 
}

 

클래스 선언

  • 필드와 메소드는 클래스가 가지는 맴버이다.
  [접근제한자] [예약어] class 클래스명 {
      자료형 변수명;     //속성값 설정(변수)
      자료형 변수명;
      
      [접근 제한자] 생성자명() {}
      [접근 제한자] 리턴형 메소드명(매개변수) {    //기능정의 설정(메소드)
       기능정의
    }
  }

  public class Person{ 
      private String name; 
      private int age; 
     
      public Person(){} 
      public String getName(){ 
         return name; 
      } 
      public void setName(String name){ 
         this.name = name; 
      }

 

클래스 예약어와 접근 제한자

  • 클래스를 사용하려고 하였을때 공개를 하는 범위를 지정하는것
구분 같은 패키지 내 전체
+ public O O
- (default) O  

default 클래스 - 다른 패키지에서 호출 가능 여부 / 에러

package com.kh.chap02_class.defaultClassTest.model.vo;

//접근제한자를 작성하지 않으면 default의 의미를 가진다.
//default라고 명시를 하게 되면 에러 발생함
/*default*/ class TestDefaultClass {
        public void test() {
                System.out.println("default클래스 내의 test() 호출됨...");
        }
}
package com.kh.chap02_class.defaultClassTest.controller;

public class Run {

        public static void main(String[] args) {
                //default클래스는 패키지 외부에서는 접근이 불가능하기 때문에 없는 클래스라는 에러가 발생한다.
                //하지만 같은 패키지 내에서는 사용이 가능하다.
                /*TestDefaultClass test = new TestDefaultClass();*/
        }
}

 

public 클래스 - 다른 패키지에서 호출 가능 여부 / 가능

package com.kh.chap02_class.publicClassTest.model.vo;

public class TestPublicClass {
        public void test() {
                System.out.println("public 클래스 내의 test() 호출됨...");
        }
}
package com.kh.chap02_class.publicClassTest.controller;

import com.kh.chap02_class.publicClassTest.model.vo.TestPublicClass;

public class Run {

        public static void main(String[] args) {
                TestPublicClass test = new TestPublicClass();
                test.test();
        }
}

 

클래스 선언시 사용 가능한 예약어

  • final : 클래스에 사용하면 재사용이 불가능하다. (변경, 수정, 접근)
    • 지역변수, 맴버변수, 클래스, 메소드에 다 사용가능하다.
  • abstract : 왼성되지 않은 클래스를 작성할때 사용한다.
    • 반드시 상속을 받아 후손 클래스에서 완성시켜야 한다.

=> 두 예약어를 동시에 사용할 수 없다.