[JAVA] 클래스와 객체

Coastby·2022년 9월 22일
0

LIKELION Back-End School

목록 보기
9/61

클래스와 객체

class Cricle{  
    int radius;
    String color;

    double calcArea() {
        return 3.14 * radius *radius;
    }
}

public class Main {
    public static void main(String[] args) {
		Cricle obj;				// 1) 참조 변수 선언
        obj = new Cricle();		// 2) 객체 생성
        obj.radius = 100;		// 3) 객체 필드, 메소드 접근
        obj.color = "blue";
        double area = obj.calcArea();
        System.out.println("원의 면적 = " + area);
    }
}

○ 클래스

  • 클래스의 정의 : 클래스란 객체를 정의해 놓은 것이다.
  • 클래스의 용도 : 클래스는 객체를 생성하는데 사용된다.

  • java 파일의 클래스는 컴파일하면 .class 형식의 바이너리 파일로 변환된다.

인스턴스의 생성과 사용

⭐️ 객체란 .class를 메모리로 올린 것

1) 참조 변수 선언

Circle obj;

Circle 클래스 타입의 참조 변수 obj를 선언하게 되면, 메모리에 참조변수 obj를 위한 공간이 마련된다. 아직 인스턴스가 생성되지 않았으므로 null상태이다.

int를 선언하는 것과 마찬가지로 obj에는

1) 몇 바이트? 4byte
JVM이 32bit이므로 4바이트

2) 메모리에 들어가는 것?
주소값

이 들어간다. 주소값을 참고하는 것이므로 참조형이라고 한다.

💡 함수, 참조값는 4byte!


2) 객체 생성

obj = new Circle();

new를 선언하게 되면 해당 class의 인스턴스를 heap에 올린다. 이 때, 멤버변수는 각 자료형에 해당하는 기본값으로 초기화 된다.

그리고 = 대입자에 의해 Heap에 생성된 객체의 첫번째 주소를 a에 대입한다.

이제는 참조변수 obj를 통해서 Circle 인스턴스에 접근할 수 있다. 인스턴스를 다루기 위해서는 참조변수가 반드시 필요하다.

💡 초기화

  • 참조형 변수 : null
  • boolean : false
  • byte, short, int : 0
  • long : 0l
  • float : 0.0f
  • double : 0.0 or 0.0d
  • char : ₩u0000'

3) 객체의 필드 접근

obj.radius = 100;
obj.color = "blue";

참조변수 obj에 저장된 주소에 있는 인스턴스의 멤버변수 radius에 100을 저장한다.

연습예제

✍️ 학생을 나타내는 클래스

  • 이름, 학번, 나이를 가진다.
  • Student 클래스를 작성하고 객체를 생성하여 테스트한다.
class Student {
	String name;
	int id;
	int age;
	
	public void getInfo() {
		System.out.println("학생의 이름: " + this.name);
		System.out.println("학생의 학번: " + this.id);
		System.out.println("학생의 나이: " + this.age);
	}
}

public class CircleTest {
	public static void main(String[] args) {
		Student a1 = new Student();
		a1.name = "훈이";
		a1.id = 20180001;
		a1.age = 4;
		
		a1.getInfo();
		
//		System.out.println("학생의 이름: " + a1.name);
//		System.out.println("학생의 학번: " + a1.id);
//		System.out.println("학생의 나이: " + a1.age);
	}
}

✍️ 직사각형 객체

  • 객체의 가로 세로를 지정한다.
  • 넓이를 반환하는 함수를 만든다.
class Rectangle {
	
	int width;
	int height;
	
	public void setWidth (int width) {
		this.width = width;
	}
	public void setHeight (int height) {
		this.height = height;
	}
	public int getArea() {
		
		return width*height;
	}
}


public class CircleTest {
	public static void main(String[] args) {
		Rectangle rec = new Rectangle();
		rec.setWidth(10);
		rec.setHeight(10);
		System.out.println(rec.getArea());
	}
}
profile
훈이야 화이팅

0개의 댓글