- 클래스명 레퍼런스변수명 = 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 : 왼성되지 않은 클래스를 작성할때 사용한다.
- 반드시 상속을 받아 후손 클래스에서 완성시켜야 한다.
=> 두 예약어를 동시에 사용할 수 없다.
'JAVA > 이론 정리 및 예제' 카테고리의 다른 글
[JAVA/자바] #6_4 생성자(constructor) / 예제 (0) | 2021.09.14 |
---|---|
[JAVA/자바] #6_3 필드(field)/ 예제 (0) | 2021.09.14 |
[JAVA/자바] #6_1 객체지향언어 / 예제 (0) | 2021.09.14 |
[JAVA/자바] #5_2 mainArgument (0) | 2021.09.14 |
[JAVA/자바] #5_1 2차원배열 / 예제 (0) | 2021.09.14 |