본문 바로가기
Backend/JAVA

JAVA 클래스

by YERIEL_염주둥 2020. 4. 21.
728x90

1. 클래스 선언하기


- 클래스 키워드와 함께 클래스명 지정
- 접근 지정자 지정
- 필드와 함께 메서드를 갖는다.

 

2. 접근지정자 


- public : 전 패키지 내에 접근 가능 
- protected : 해당 패키지 내에서 접근 가능
- private : 해당 클래스에서 접근가능
- default : 접근 지정자가 명시 되어있지 않는 클래스나 메서드, protected와 동일

 

3. 필드

- 필드는 접근지정자와 데이터형 변수명으로 변수를 선언 가능
- 접근지정자 데이터형 변수명;
- 필드는 주로 private으로 선언하여 캡슐화한다.

**캡슐화 ; 클래스의 데이터와 기능을 하나로 묶어 구성원을 보호하는 기능
             다른 패키지에서 접근할 수 없도록 보호하는 것, 데이터 은닉

 

4. 메서드

- 메서드는 접근지정자, 리턴 타입, 메서드명으로 이루어진다.
- 매개변수를 받거나 생략할 수 있다.
- 명시된 리턴타입에 맞춰 해당 데이터형을 리턴해줘야 한다.
- 매서드메서드 내에서 this 키워드를 활용하여 자신의 클래스에 해당되는 필드 혹은 매서드에 접근할 수 있다.
- 기본구조

접근지정자 리턴타입 메서드명 (매개변수){ }

 

5. 리턴

- 리턴 타입에 따라 리턴 있고 없고
- void 리턴 없음

 

6. 실습

클래스 기본 구조

package kr.or.ksmart;

public class JavaBasic03 {
	
	private String name;
	
	public void test() {

		this.name = "홍길동";
	}
	
	public static void main(String[] args) {
		JavaBasic03 javabasic = new JavaBasic03();  //본인도 객체화 해야 사용 가능
		javabasic.test();  //접근 지정자 public이라 접근 가능
		javabasic.name; //private 은 접근 불가 -> 이거슨 에러임당!!
	}

}

 

파일 하나에 여러 개 클래스 생성하기

package kr.or.ksmart;

class Car{
	int num;
	double gas;
	
}

class JavaBasic04 {

	public static void main(String[] args) {
		Car car = new Car(); //변수를 선언해서 객체화 한다.
		car.gas = 15.5; //속성에 접근 가능하다.
		car.num = 2534;
	}

}

파일 하나에 하나의 클래스를 주로 작업하지만 파일 하나에 여러 개 클래스를 생성할 수 있다.

접근 지정자는 메인 클래스에 하나만 지정하면 된다.

 

객체화를 여러 번 하면

package kr.or.ksmart;

class Car{
	int num;
	double gas;	
}

class JavaBasic04 {

	public static void main(String[] args) {
		//new 연산자를 통해 인스턴스화(객체화)를 해야 해당 클래스의 매서드나 필드에 접근 가능하다.
		Car car = new Car();
		car.gas = 15.5;
		car.num = 2534;
		
		System.out.println(car.gas + " : gas");
		System.out.println(car.num + " : num");
		
		car = new Car(); //이 객체는 다른 주소값을 갖게 된다.
		System.out.println(car.gas + " : gas");
		System.out.println(car.num + " : num");
		
	}

}

 

private 접근지정자 필드에 접근하는 방법

package kr.or.ksmart;

class Car{
	int num;
	double gas;
	private String carName;
	String getCarName() { //값을 가져올때 get
		return carName;
	}
	void setCarName(String carName) { //값을 넣은때 set
		this.carName = carName;
	}
	
}

class JavaBasic04 {

	public static void main(String[] args) {
		//new 연산자를 통해 인스턴스화(객체화)를 해야 해당 클래스의 매서드나 필드에 접근 가능하다.
		Car car = new Car();
		car.gas = 15.5;
		car.num = 2534;
		car.setCarName("mustang"); 
        //필드가 private 접근지정자임으로 protected 접근 지정자인 메서드로 접근하여 필드에 접근한다.
		System.out.println(car.gas + " : gas");
		System.out.println(car.num + " : num");
		System.out.println(car.getCarName() + " : carName");
		
	}

}

 

리턴에서 객체화 하기

package kr.or.ksmart;

class Car{
	int num;
	double gas;
	private String carName;
	String getCarName() {
		return carName;
	}
	void setCarName(String carName) {
		this.carName = carName;
	}
	
}

class Car2{
	Car getCar() {
		return new Car(); //객체화 한 것을 바로 리턴
	}
}

class JavaBasic04 {

	public static void main(String[] args) {
	
		Car2 car2 = new Car2();
		car = car2.getCar(); 
	}

}

클래스 Car2의 리턴이 Car클래스를 객체화 해줬기 때문에 클래스 JavaBasic04 에서 별도의 Car 클래스 인스턴스화 없이 바로 사용 가능하다.

반응형

'Backend > JAVA' 카테고리의 다른 글

JAVA 실습. 클래스  (0) 2020.04.21
JAVA 형 변환  (0) 2020.04.21
JAVA 배열  (0) 2020.04.21
JAVA txt로 작성하여 cmd로 컴파일 및 실행하기  (0) 2020.04.14
jdbc 로그인 처리하기  (0) 2020.03.27

댓글